概念:
代码块又称为初始化块,属于类中的成员,类似于方法,将逻辑语句封装在方法体中,通过大括号包围起来。它在加载类时,或创建对象时隐式调用
基本语法:
[修饰符]{代码};
注意:
1、修饰符可选,要写的话,只能写static
2、结尾分号可以省略
代码块的好处:
1、相当于另外一种形式的构造器,可以做初始化操作,例如当多个构造器中都有重复的语句,可以抽取到初始代码块中
细节:
1、static代码块叫做静态代码块,作用就是对类进行初始化,而且它随着类的加载而执行,并且只会执行一次。如果是普通代码块,每创建一个对象就执行一次
2、类什么时候被加载
a)创建对象实例时(new)
b)创建子类对象实例,父类也会被加载,而且父类先被加载
c)使用类的静态成员时(静态属性、方法)
3、普通代码块,在创建对象实例时,会被隐式的调用,被创建一次就会调用一次,如果只是使用类的静态成员时,普通代码块不会执行
4、创建一个对象时,在一个类的调用顺序:
a)调用静态代码块和静态属性初始化(静态代码块和静态属性初始化调用的优先级相同,如果有多个静态代码块和多个静态变量初始化,则按他们定义的顺序调用)
b)调用普通代码块和普通属性的初始化(和a)同理)
c)调用构造方法
举例:
结果为:
5、有继承关系时的调用顺序
a)父类的静态代码块和静态属性初始化
b)子类的静态代码块和静态属性初始化
c)父类的普通代码块和普通属性初始化
d)父类的构造器
e)子类的普通代码块和普通属性初始化
f)子类的构造器