java类加载时执行顺序

时间:2023-03-08 17:48:52
源代码
class HelloA {
public HelloA() {
System.out.print("A");
} {
System.out.print("B");
} static {
System.out.print("C");
}
} public class HelloB extends HelloA { public HelloB() {
System.out.print("D");
} {
System.out.print("E");
} static {
System.out.print("F");
} public static void main(String[] args) {
System.out.print("G");
new HelloB();
new HelloB();
System.out.print("H");
}
}

运行结果:CFGBAEDBAEDH

图解:

java类加载时执行顺序

补记2019-05-22:

  加载顺序应该是;在编译完成后,首次加载会优先执行父类和子类中的静态代码块。其次当实例化子类对象的时候,首先会执行父类的代码块、构造,再其次是子类代码块,构造。

  再总结一下执行的优先顺序:static代码块  > {}代码块   >   构造   >  函数语句

相关文章