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


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

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

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

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

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

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

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

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

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

  • 相关阅读:
    Docker Swarm总结
    机器人自适应控制
    supervisor+daphne+nginx部署django channels websocket项目
    【uni-app + uView】CountryCodePicker 国家区号组件
    Transformer
    pytest + yaml 框架 -55. raw 不转义模板语法
    java计算机毕业设计ssm智慧农贸信息化管理平台(源码+系统+mysql数据库+Lw文档)
    Kotlin 协程之取消与异常处理探索之旅(下)
    C++ 类
    .NET周报【10月第3期 2022-10-25】
  • 原文地址:https://blog.csdn.net/qq_43116031/article/details/133621373