java类加载时执行顺序

Posted more harder, the more fortunat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java类加载时执行顺序相关的知识,希望对你有一定的参考价值。

 

源代码
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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

图解:

 

补记2019-05-22:

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

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

以上是关于java类加载时执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

java中的静态代码块、代码块、构造器的执行顺序是怎样呢,这三者有啥作用呢

java内部类及类加载顺序

子类继承父类,子类执行的时候,父子类的执行顺序?

Java类加载

Java类加载

类加载时执行顺序