Java 类初始化顺序 -- 结合阿里2014校招笔试 Java 附加题
首先用文字简单描述一下Java 类的初始化顺序(此处引用 Core Java Volume I 中的译文)
规则1:在类第一次加载的时候,将会进行静态域的初始化:
1. 将所有的静态数据域初始化为默认值(0、false 和 null)
2. 按照在类中定义的顺序依次执行静态初始化语句和静态初始化块
规则2:调用构造器的具体处理步骤:
1. 将所有的数据域初始化为默认值(0、false 和 null)
2. 按照在类中定义的顺序依次执行初始化语句和初始化块
3. 如果构造器调用的其他的构造器,则转而执行另一构造器
4. 执行构造器主体
类加载的时机只需简单的知道是在调用构造器之前且只有一次,具体的类加载过程这里就不说了,否则就跑得太偏了。
下面我们来看一下阿里巴巴 2014 年校招研发类笔试的 Java 附加题
9:j i=8 n=10010:构造块 i=9 n=10111:init i=10 n=102