关键字:java面试题初始化大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果。这实际上是在考查我们对于继承情况下类的初始化顺序的了解。我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:Java代码1.publicclassInitialOrderTest{2.3.//静态变量4.publicstaticStringstaticField="静态变量";5.//变量6.publicStringfield="变量";7.8.//静态初始化块9.static{10.System.out.println(staticField);11.System.out.println("静态初始化块");12.}13.14.//初始化块15.{16.System.out.println(field);17.System.out.println("初始化块");18.}19.20.//构造器21.publicInitialOrderTest(){22.System.out.println("构造器");23.}24.25.publicstaticvoidmain(String[]args){26.newInitialOrderTest();27.}28.}运行以上代码,我们会得到如下的输出结果:1.静态变量2.静态初始化块3.变量4.初始化块5.构造器这与上文中说的完全符合。那么对于继承情况下又会怎样呢?我们仍然以一段测试代码来获取最终结果:Java代码1.classParent{2.//静态变量3.publicstaticStringp_StaticField="父类--静态变量";4.//变量5.publicStringp_Field="父类--变量";6.7.//静态初始化块8.static{9.System.out.println(p_StaticField);10.System.out.println("父类--静态初始化块");11.}12.13.//初始化块14.{15.System.out.println(p_Field);16.System.out.println("父类--初始化块");17.}18.19.//构造器20.publicParent(){21.System.out.println("父类--构造器");22.}23.}24.25.publicclassSubClassextendsParent{26.//静态变量27.publicstaticStrings_StaticField="子类--静态变量";28.//变量29.publicStrings_Field="子类--变量";30.//静态初始化块31.static{32.System.out.println(s_StaticField);33.System.out.println("子类--静态初始化块");34.}35.//初始化块36.{37.System.out.println(s_Field);38.System.out.println("子类--初始化块");39.}40.41.//构造器42.publicSubClass(){43.System.out.println("子类--构造器");44.}45.4...