初始化块

语法

[修饰符]{
//各种语句
}
【备注】初始化块是没有名字的。
修饰符只能出现一个:static

  • 有static叫做类初始化块(静态初始化块)。
  • 无static叫做实例初始化块(非静态初始化块)。

实例初始化块(无static)

  • 实例初始化块是“假象”,一个类在编译之后,实例初始化块就会消失
  • 实例初始化块的代码会被还原到每个构造器的所有代码之前。
  • 实例初始化块的作用:将多个构造器前面部分相同的代码提取出来,形成实例初始化块。

定义实例变量的原理

  • 定义实例变量时指定的初始值,也是“假象”。
  • 指定初始值,编译之后就变成构造器所有代码之前的一条赋值语句。
  • 【注】实例初始化块的语句要还原到构造器的所有代码之前;定义变量指定的初始值,也要还原到构造器的所有代码之前;这二者还原之后的顺序,按照它们在源代码中的顺序。

实例初始化块何时执行?

答:只要程序调用构造器创建对象,程序总会先执行实例初始化块----因为实例初始化块被还原到每个构造器的所有代码之前。

类初始化块(有static)

  • 作用: 负责对类执行初始化。当程序第一次【主动】使用该类时,系统会为该类分配内存空间、并执行初始化(调用类初始化块)。
  • 如何叫做主动使用?
    答:只要使用该类,基本都算主动使用----除了仅使用类声明变量

定义类变量的原理

  • 定义类变量时指定的初始值,也是“假象”。
  • 指定的初始值,编译后就变成类初始化中的一条赋值语句。
  • 但到底是在类初始化块的代码之前,还是代码之后,取决于它在源代码中的顺序。

类初始化块何时执行?

:程序第一次【主动】使用该类时,会执行该类的类初始化块。程序运行时,该类初始化块只执行一次。

.执行次数执行先后何时执行
类初始化块1次第一次主动用该类
实例初始化块N次每次调用构造器

总结】:
①初始化任何类之前,一定先从Object开始初始化,依次初始化它所有祖先类,最后才是自己。
②创建任何对象的时候,一定是从Object构造器开始执行,执行它所有祖先类的构造器后,最后才执行自己的构造器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值