目录
代码块基本概念
修饰符可有可无
写的话只能是static
代码块的好处
相当于构造器的补充机制
观看代码
可以发现构造器3个重载,每个重载都有同样的语句
代码看起来冗余
这时可以把相同的语句放入到一个代码块中即可
如图
当我们不管调用哪个构造器都会先执行代码块中的内容(代码块调用顺序优先于构造器)
如图
代码块的使用注意细节
1.静态代码块
加static修饰符的代码块,随着类的加载而执行,并且只会执行一次
因为类只会加载一次呐
2.《Java之类的加载时机(重点)》
1.创建对象实例的时候(new)
2.创建子类对象实类的时候,父类也会被加载
3.使用该类的静态成员变量/方法时,该类也会加载(以及其父类)
情况1
创建对象实例
情况2
创建子类对象
AA为Movie的子类
情况3
调用Movie的静态方法(静态变量是同理的)
特殊当你调用子类的static方法/变量
父类也会被加载
如果是普通代码块每,创建应该对象就会调用一次
3.普通代码块,调用时机
4.代码块调用顺序
5. 构造器隐藏中隐藏着代码块
由图可知普通代码块先执行然后构造器执行
其实每个类的构造器
都隐藏了一段代码
super();
以及
调用本类的普通代码块和属性初始化(是按书写代码顺序调用的,所以这两不分先后)
然后才到我们写在构造器里的语句
6.继承中父类和子类的代码块和构造器调用顺序
7是一些小细节
! 代码块和属性初始化是同一优先级,看顺序