Java初始化顺序

类初始化可分为自动初始化和手动初始化。如果未指定初始化,则按默认值初始化。
类的初始化顺序即类内部的执行顺序。

类的初始化遵循两个原则:

  • 先静态后非静态
  • 先字段后构造器
public class Example {
    public static void main(String[] args) {    //(1)
        new Test();                        //(2)
    }
    static test1 = new Test(1);    //(3)
}

class Test {
    public int first;            //(4)
    public static int last;    //(5)

    public Test(int num) {    //(6)
        this.first = num;   
     }
}

当类加载器加载Example类时,在Example内部依次执行(3) -> (1) -> (2);当类Test被加载时,在内部依次执行(5) -> (4) -> (6)。

静态字段仅在类加载的时候被初始化且只执行一次。因此,当执行语句(2)时,实例化Test对象时仅执行语句(4)和(6),语句(5)不再执行。

原文地址:https://www.cnblogs.com/weixia-blog/p/9264824.html