首先,初始化块 initialization blocks 有两种类型:
- 实例初始化块(instance initialization blocks)
- 静态初始化块(static initialization blocks)
下面的代码展示了它们的用法以及执行顺序:
public class Test {
static int staticVariable;
int nonStaticVariable;
// 静态初始化块:
// 在类被初始化时仅运行一次
static {
System.out.println("静态初始化。");
staticVariable = 5;
}
// 实例初始化块:
// 每次创建对象时都会运行
{
System.out.println("实例初始化。");
nonStaticVariable = 7;
}
public Test() {
System.out.println("构造函数。");
}
public static void main(String[] args) {
new Test();
new Test();
}
}
输出结果为:
静态初始化。
实例初始化。
构造函数。
实例初始化。
构造函数。
实例初始化块非常有用,当你希望无论使用哪个构造函数都执行某些代码时,或者在匿名类中需要进行实例初始化时,就可以使用它。