java动态代码块与静态代码块

动静态代码块分析

动态代码块

  • 初始化代码块 又称 动态初始化代码块
  • 定义在类以内 方法以外的代码块{}
  • 作用:创建对象时,按照和属性(实例变量)定义的先后 顺序
    完成对属性初始化工作。
    在这里插入图片描述

静态代码块

  • 定义在类以内方法以外并且被static修饰的{}
  • 作用:在类加载的时候,按照和静态属性定义的
    先后顺序完成静态属性的初始化工作
  • 类加载:
    (1)JVM第一次使用一个类的时候,通过 classPath(类路径)找到所需要的类对应的 .class 文件, 读取并获取类对应信息(包名、类名、属性、构造方法、 成员方法、父类等信息),将类的信息保存到JVM内存中, 一个类类加载进行一次。
    (2)第一次使用一个类:
    a. 第一次调用类中静态成员(静态属性和静态方法)
    b. 第一次创建一个类的对象:先进行类加载,再完成对象的 创建
    c. 子类类加载 会 先 导致其父类进行类加载
    注意:只是声明引用,不会导致类加载。
    在这里插入图片描述

当子类创建对象时 要先加载父类再加载子类
之后进行对象的创建 先创建父类对象 再创建子类对象
根据属性与静态代码块的顺序进行对属性的更改

小编建议将动静态代码块结合super引用进行理解
对比加深印象
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值