• 执行顺序:(父类静态变量/父类静态代码块)【同级,但是执行顺序取决于代码顺序】 -> (子类静态变量 -> 子类静态代码块)【同级,但是执行顺序取决于代码顺序】 -> 父类非静态变量 -> 父类构造函数 -> 子类非静态变量 -> 子类构造函数。

    缓存池

    new Integer(123) 与 Integer.valueOf(123) 的区别在于:

  • new Integer(123) 每次都会新建一个对象

  • Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。

编译器会在缓冲池范围内的基本类型自动装箱过程调用 valueOf() 方法,因此多个 Integer 实例使用自动装箱来创建并且值相同,那么就会引用相同的对象。

  1. Integer m = 123; Integer n = 123; System.out.println(m == n); // true