java中变量加载顺序再学习

    xiaoxiao2021-03-25  82

    先看一段代码:

    public class HelloB extends HelloA{ public HelloB(){ System.out.println("HelloB"); } { System.out.println("I am B class"); } static{ System.out.println("static B"); } public static void main(String[] args) { new HelloB(); } } class HelloA{ public HelloA(){ System.out.println("HelloA"); } { System.out.println("I am A class"); } static { System.out.println("static A"); } } 请问输出的结果是啥?

    答案:

    static A static B I am A class HelloA I am B class HelloB

    java程序的初始化一般遵循以下三个原则,

    ①:静态对象(变量)优于非静态对象(变量),其中,静态变量只初始化一次,而非静态对象(变量)初始化多次。

    ②:父类优先于子类进行初始化。

    ③:按照成员变量定义顺序进行初始化,及时变量定义散布于块之中,他们依然在任何方法(包括构造方法)被调用之前初始化。

    一般的,执行顺序如下:

    父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造方法、

    子类非静态变量、子类非静态代码块、子类构造方法。

    转载请注明原文地址: https://ju.6miu.com/read-33504.html

    最新回复(0)