• 构造方法、成员变量初始化以及静态成员变量三者的初始化顺序?


    在Java中,类的实例化过程中,构造方法、成员变量初始化以及静态成员变量的初始化按照一定的顺序进行,主要有以下几个步骤:

    1. 静态成员变量初始化: 在类加载的过程中,首先会执行静态成员变量的初始化。静态成员变量属于类级别的,只会初始化一次,不论是否创建了类的实例。

    2. 静态初始化块(静态代码块): 如果类中包含静态初始化块,它会在静态成员变量初始化之后执行。静态初始化块用于在类加载时执行一些额外的静态初始化操作。

    3. 成员变量初始化: 在对象创建时,会先进行成员变量的初始化。这包括了类级别的静态成员变量和实例级别的成员变量。成员变量初始化的顺序是根据它们在类中的声明顺序来决定的。

    4. 构造方法: 最后,在成员变量初始化完成后,会调用构造方法来完成对象的初始化。构造方法可以进行一些对象级别的初始化工作,通常是通过调用构造方法来创建对象。

    需要注意的是,如果类继承了其他类,初始化顺序还会受到父类构造方法和静态初始化块的影响。具体来说,父类的静态成员变量初始化、父类的静态初始化块、父类的成员变量初始化、父类的构造方法会在子类的对应部分之前执行。

    总结一下,初始化顺序如下:

    1. 父类的静态成员变量初始化和静态初始化块(按照继承层次从上到下)。
    2. 子类的静态成员变量初始化和静态初始化块(按照继承层次从上到下)。
    3. 父类的成员变量初始化(按照声明顺序)。
    4. 父类的构造方法。
    5. 子类的成员变量初始化(按照声明顺序)。
    6. 子类的构造方法。

    这些初始化步骤确保了对象在创建时的正确初始化和状态设置。

  • 相关阅读:
    Nuxt3 的生命周期和钩子函数(三)
    Js----Math
    Kafka API
    【情态动词练习题】Can I / We ... ?
    python如何使用IP池
    css:不同设备的适配和响应
    js数组操作——对象数组根据某个相同的字段分组
    实践:二进制数据处理与封装
    【C++】STL之适配器---用deque实现栈和队列
    内网穿透的应用-如何本地部署Elasticsearch搜索分析引擎实现并发布公网远程访问
  • 原文地址:https://blog.csdn.net/qq_43116031/article/details/133621373