• java初始化、执行顺序



    ▪ 代码块作用:用来初始化类、对象的信息


    ★ 执行过程:new了某类的新对象的时候

    前提:某类需要先存在,即虚拟机jvm把某个类从硬盘上加载到内存【类加载到内存】
    执行静态代码块,加载静态成员属性、静态方法和普通方法。


    ① 执行静态代码块【随着类的加载而执行】

    如果有静态成员变量,也会执行,至于和静态代码块执行先后顺序看代码位置。

    ② 执行构造代码块【类加载完成后,开始创建对象。创建对象前,先创建对象的资源】

    如果有普通成员变量,也会执行,至于和构造代码块执行先后顺序看代码位置。

    ③ 执行构造器,完成创建对象



    ★ 如果有继承关系:

    ① 执行父类、子类的静态代码块(静态资源)【随着类的加载而执行】

    如果有静态成员变量,也会执行,至于和静态代码块执行先后顺序看代码位置。

    父类静态代码块—>父类静态变量–>子类静态代码块–>子类静态变量
    或者是:父类静态变量—>父类静态代码块–>子类静态变量–>子类静态代码块


    ② 执行构造代码块【类加载完成后,开始创建对象。创建对象前,先创建对象的资源】

    如果有普通成员变量,也会执行,至于和构造代码块执行先后顺序看代码位置。

    ③ 执行构造器,完成创建对象

    父类代码块—>父类普通成员变量–>父类构造函数–>子类代码块–>子类普通成员变量–>子类构造器
    或者是:父类普通成员变量–>父类代码块—>父类构造函数–>子类普通成员变量–>子类代码块–>子类构造器



    总结:最先执行静态代码块(随着类的加载而执行),然后在执行构造器前,先执行构造代码块

  • 相关阅读:
    jar强退出 JVM报错:Failed to write core dump. Core dumps have been disabled.
    配置 DHCP Snooping 和 IPSG
    OpenOffice
    RabbitMQ ADD
    YAPI 接口管理
    mysql:1153 Got a packet bigger than ‘max_allowed_packet’ bytes的解决方法
    修改端口的VLAN
    阿里云OSS设置跨域访问
    seata连接nacos 报错
    Linux登录超时问题
  • 原文地址:https://www.cnblogs.com/shan333/p/16544187.html
Copyright © 2020-2023  润新知