Java程序初始化顺序
首先来看一段代码
class a{
static b b1 = new b();
static{
System.out.println("1");
}
a(){
System.out.println("2");
}
}
public class b extends a{
static{
System.out.println("3");
}
b(){
System.out.println("4");
}
public static void main(String[] args) {
System.out.println("====");
b b = new b();
}
}
输出顺序应该是什么样的呢?
2
4
1
3
====
2
4
根据上图可知:在程序初始化时,先会初始化父类中的静态变量和静态的代码块。然后再是子类中的静态变量和静态代码块。
然后在创建对象的时候,会先调用父类的构造函数(默认调用super()函数)