Java程序初始化遵循原则:
1.静态对象(变量)优先于非静态对象(变量)初始化。其中,静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化多次。
2.父类优先于子类进行初始化。
3.按照成员变量的定义顺序进行初始化。即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。即:先变量后方法。
具体执行顺序如下:
父类静态变量>父类静态代码块>子类静态变量>子类静态代码块>父类非静态变量>父类非静态代码块>父类构造函数>子类非静态变量>子类非静态代码块>子类构造函数。