博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每日一题总结 2020.02.06-2020.02.16
阅读量:339 次
发布时间:2019-03-04

本文共 3201 字,大约阅读时间需要 10 分钟。

  • 8种基本类型变量:

boolean 1字节

byte 1字节
short 2字节
char 2字节
int 4字节
float 4字节
double 8字节
long 8字节

byte b1=1,b2=2,b3,b6;  final byte b4=4,b5=6;

     当 short、byte、char在进行运算时,会自动转化成int类型。 因此 b3=b1+b2,编译出错,因为会先将b1、b2这两个byte类型的变量转化成int类型运算,赋给b4时要强转成int才行: b3=(byte)(b1+b2)。其他变量在进行运算时遵循以下优先级

byte<short<char<int<long<float<double ( 高 )
     而对于final 类型的常量,有常量转化优化机制:两个常量进行运算时不会自动转化,b4+b5的结果还是byte类型。
    常量+非常量时,比如b1+b4 ,b1、b4都会转化成int再运算。

  • 关于异常处理机制
InputStream in=new FileInputStream( ... );//1code that might throw exception//2}catch(IOException e){
//3show error message//4}finally{
//5in.close();

在上面这段代码中,有下列 3 种情况会执行finally子句:

1)代码没有抛出异常。
不管是否有异常被捕获,finally子句中的代码都被执行。
在这种情况下,程序首先执行 try 语句块种的全部代码,然后执行 finally 子句中的代码。随后,继续执行 try 语句块之后的第一条语句。
1、2、5、6。

2)抛出一个在catch子句中捕获的异常。

比如上述例子的 IOException。在这种情况下,程序将执行try语句块中的所有代码,直到发生异常为止。此时,将跳过try语句块中的剩余代码,转去执行与该异常匹配的catch子句中的代码,最后执行finally子句中的代码。
如果catch子句没有抛出异常,程序将执行try语句块之后的第一条语句:
1、3、4、5、6。
如果catch子句有抛出异常,异常将会被抛回到这个方法的调用者。
1、3、5。
当代码抛出一个异常时,就会终止方法中剩余代码的处理,并退出这个方法的执行。
所以不执行6。

3)代码抛出了一个异常,但这个异常不是由catch块捕获的。

在这种情况下,程序将执行try语句块中的所有语句,直到有异常被抛出为止。此时,将跳过 try 语句块中的剩余代码,然后执行 finally 子句中的语句,并将异常抛给这个方法的调用者。
1、5。

在方法体声明 throws,在该方法出现异常时,会向调用处抛出该异常,即new 异常对象,在控制台打印异常信息( 包括异常的类型和堆栈的内容 ),而后该方法会终止执行,不能继续向下执行了。

  • 虚拟机中的堆、栈

    (1)
    JVM所管理的内存中最大的一块。
    被所有线程共享,在JVM启动时创建.
    所有对象实例和数组都要在堆上分配内存。
    方法区:
    ”非堆“。
    存储已被虚拟机加载的信息、常量、静态变量、即时编译器编译后代码。
    (2)
    虚拟机栈:
    Java方法执行的内存模型。
    每个方法在执行的同时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等,方法从调用到执行完成的过程,对应一个栈帧从虚拟机中入栈到出栈的过程。
    本地方法栈:
    本地方法… …

  • 抽象方法:

    ”抽象方法充当着占位的角色,它们的具体实现在子类中。“
    而final修饰的方法不能被覆写。所以final和abstract不能同时修饰一个方法。

(抽象类不能被实例化。)

  • 装饰模式 ~ 扩展性。

2020.02.07

  • ArrayList arraylist=new ArrayList (20)中的arraylist扩充了0次。
    有参构造传入初始容量时,是直接分配initialCapacity大小的数组空间的。
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA; } else {
throw new IllegalArgumentException("Illegal Capacity: "+initialCapacity); } }
  • CallableStatement–>(继承于)PreparedStatement–>Statement–>Wrapper。

  • List、Set都是接口。

    HashSet继承于AbsractSet。
    WeakHashMap继承于AbstractMap 。

  • 标识符由数字、字母、_、$组成。不能包含关键字(小写)。

  • 主方法中的 String 类型的 args 数组是专门用来接收命令行参数的。

    System.out.print(args.length); (未通过命令行传入参数时)运行结果为 0。

public class f{
public static void main(String[] args){
for(int i=0;i<3;i++)System.out.print(args[i]+" ");}}

    对于上述的类 f 如果在 javac 编译后,运行时传入 a b c参数,java f a b c ,结果如下:

在这里插入图片描述
而对于这样的 f 类:

public class f{
public static void main(String[] args){
String foo1=args[1];String foo2=args[2];String foo3=args[3];} }

    同样是编译后运行java f a b c在这里插入图片描述

    程序运行错误,因为传入 3 个字符串参数,那么args数组的长度就为 3 ,而主方法中下标到了 [3] ,所以下标异常。

  • 关于类方法(静态方法):
    (1)在类方法中绝对不能调用实例方法。 ×
        可以在类方法中创建实例对象,然后通过实例对象调用实例方法。(~ 联想主方法 p s v m)
    (2)在类方法中只能调用本类的类方法。 ×
    (不知道应该改为:可以调用其他类的类方法 ???
                    还是改为 可以调用本类的实例方法)

(类方法中不能出现 this )

- Object类常见方法:

clone()
equals()
finalize()【在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。】
hasCode()
toString()
wait()
notify() /notifyAll()

          

- " && " 是短路与

  • "||"是短路或。

              

  • 接口可以用 public abstract 修饰。

    (可以理解成:接口是特殊的抽象类。)
    接口中的方法默认是 public abstract ,jdk 1.8之后允许 default (真的写上去) 、static修饰方法。
    接口中的变量默认是public static final,需要初始化。

  • JRE判断程序是否执行结束的标准是:

    所有的前台线程执行完毕。
    前台线程——用户线程。
    后台线程——守护线程。

转载地址:http://hdjh.baihongyu.com/

你可能感兴趣的文章