优先原则:
1、 静态对象(变量)优先于非静态对象(变量) |{静态只初始化一次,非静态的可能多次}
2、 父类优先于子类进行初始化
3、 成员变量的定义顺序进行初始化
执行的顺序:
父类静态变量 父类静态代码块 子类静态变量 子类静态代码块
父类非静态变量 父类非静态代码块 父类构造函数
子类非静态变量 子类非静态代码块 子类构造函数
package edu.smc.xiao.study;
/*** Java程序初始化* * @author smljf* @date 2015年12月31日 下午7:46:53* */
public class JavaInit {public static void main(String[] args) {new B();}}class A{static {System.out.println("A static block .");}{System.out.println("A block .");}public A() {System.out.println("A constructor .");}}class B extends A{static {System.out.println("B static block .");}{System.out.println("B block .");}public B() {System.out.println("B constructor .");}
}
输出结果:
A static block .
B static block .
A block .
A constructor .
B block .
B constructor .