一、使用方式:不用显示调用。
二、形式:
[修饰符]{ 。。。。 };其中,修饰符只能是static,最后的分号可加可不加
三、分类:
静态代码块:前面有static修饰,只有在类加载时隐式调用一次
普通代码块:前面没有static修饰,在创建对象时隐式调用,每创建一次就调用一次。
四、场景:当多个构造器中含有重复操作,可以将其提取到代码块中,提高代码的重用性,代码块优先于构造器调用。其实构造器的内部开头隐含了:
super();
普通代码块和普通成员初始化;
五、类加载的场景:
(1)第一次创建该类的对象时
(2)第一次创建子类的对象时,父类也会被加载
(3)调用类中的静态成员时
注:创建子类对象时,不会创建父类的对象,调用构造函数是对属性的初始化,并不是创建对象
六、创建一个对象时,在一个类的调用顺序:
静态(加载时)——>普通——>构造方法中的显式语句
七、静态代码块只能直接调用静态成员,普通代码块都可以调用(静态/非静态)