本文共 3067 字,大约阅读时间需要 10 分钟。
输出结果为:1 无继承情况下的Java初始化顺序
class Sample
{Sample(String s){System.out.println(s);}Sample(){System.out.println("Sample默认构造函数被调用");}}class Test{static Sample sam=new Sample("静态成员sam初始化");Sample sam1=new Sample("sam1成员初始化");static{System.out.println("static块执行");if(sam==null)System.out.println("sam is null");sam=new Sample("静态块内初始化sam成员变量");}Test(){System.out.println("Test默认构造函数被调用");}}
class Test{ static{ System.out.println("static 块 1 执行"); } static Sample staticSam1=new Sample("静态成员staticSam1初始化"); Sample sam1=new Sample("sam1成员初始化"); static Sample staticSam2=new Sample("静态成员staticSam2初始化"); static{ System.out.println("static 块 2 执行"); } Test() { System.out.println("Test默认构造函数被调用"); } Sample sam2=new Sample("sam2成员初始化");}
class Test{ static{ System.out.println("父类static 块 1 执行"); } static Sample staticSam1=new Sample("父类 静态成员staticSam1初始化"); Sample sam1=new Sample("父类 sam1成员初始化"); static Sample staticSam2=new Sample("父类 静态成员staticSam2初始化"); static{ System.out.println("父类 static 块 2 执行"); } Test() { System.out.println("父类 Test默认构造函数被调用"); } Sample sam2=new Sample("父类 sam2成员初始化");}class TestSub extends Test{ static Sample staticSamSub=new Sample("子类 静态成员staticSamSub初始化"); TestSub() { System.out.println("子类 TestSub 默认构造函数被调用"); } Sample sam1=new Sample("子类 sam1成员初始化"); static Sample staticSamSub1=new Sample("子类 静态成员staticSamSub1初始化"); static{System.out.println("子类 static 块 执行");} Sample sam2=new Sample("子类 sam2成员初始化");}