【学到一招】java类初始化顺序
java类的初始化顺序
对于java类主要有:静态变量,静态初始化块,变量,初始化块,构造器,他们的先后顺序为 静态变量 ==静态代码块>变量初始化块=变量>构造器。一下为一些代码的测试:
public calss InitialOrder{ public static String staticField ="static Field"; public String field ="变量"; static { System.out.println(staticField); System.out.println("初始化 静态代码块"); } public InitialOrder() { System.out.println("构造器"); } }上面的构造顺序为:staticField -->静态代码块-->变量--->初始化块-->构造器对于有类的继承的情况时:顺序为:父类的静态变量父类静态初始化块子类静态变量子类的静态的代码块子类的main方法(调用子类的地方)父类的变量父类的初始化块父类的构造器子类的变量子类的初始化块子类的构造器子类 的静态变量和静态初始化块的初始化是在父类的变量,初始化块,和构造器之前完成。对于同一级别的内容主要取决于其在类中出现的顺序。先执行静态变量和静态代码块再执行动态的内容,动态的执行顺序为变量初始化,初始化代码块,构造函数。先执行基类再执行子类的一直递归下去。(静态的内容只会执行一遍)