首先,有两种类型的
initialization blocks:
>实例初始化块,和
>静态初始化块。
这段代码应该说明它们的使用以及它们的执行顺序:
public class Test {
static int staticVariable;
int nonStaticVariable;
// Static initialization block:
// Runs once (when the class is initialized)
static {
System.out.println("Static initalization.");
staticVariable = 5;
}
// Instance initialization block:
// Runs each time you instantiate an object
{
System.out.println("Instance initialization.");
nonStaticVariable = 7;
}
public Test() {
System.out.println("Constructor.");
}
public static void main(String[] args) {
new Test();
new Test();
}
}
打印:
Static initalization.
Instance initialization.
Constructor.
Instance initialization.
Constructor.
如果你想要有一些代码运行,无论使用哪个构造函数,或者你想为匿名类做一些实例初始化,实例化对象块是有用的。