初始化程序块可分为两类:实例初始化程序块和静态初始化程序块
实例初始化程序块的执行时机
——在分配对象存储空间和使用类型默认值初始化之后
——在构造方法执行之前
——与显式初始化的优先级相当, 二者的先后关系依赖于它们在代码中的出现顺序
例子:
public class InstanceInitializer{
Comp c1=new Comp(1);
public InstanceInitializer(){
System.out.println(“Instance Initializer”);
}
Comp c2;
public static void main(String[] args){
InstanceInitializer ii=new InstanceInitializer();
}
Comp c3=new Comp(3);
{ //实例初始化程序块
c2=new Comp(2);
}
}
class Comp{
public Comp(int i){ System.out.println(“Comp(” + i + “)”); }
}
运行结果: