初始化块
初始化块(Initialization Block)是在类中定义的,用于初始化类或对象的代码块。初始化块分为静态初始化块和实例初始化块两种。
静态初始化块(Static Initialization Block)
静态初始化块使用static关键字修饰,用于初始化类级别的静态变量。它在类加载时执行,并且只执行一次。
示例:
public class StaticInitializationExample {
// 静态变量
private static int staticVariable;
// 静态初始化块
static {
staticVariable = 10;
System.out.println("Static Initialization Block executed. staticVariable = " + staticVariable);
}
public static void main(String[] args) {
System.out.println("Static Initialization Example");
}
}
输出:
Static Initialization Block executed. staticVariable = 10
Static Initialization Example
实例初始化块(Instance Initialization Block)
实例初始化块没有static关键字,用于初始化实例变量。它在每次创建对象时执行,并且在构造函数之前执行。
示例:
public class InstanceInitializationExample {
// 实例变量
private int instanceVariable;
// 实例初始化块
{
instanceVariable = 5;
System.out.println("Instance Initialization Block executed. instanceVariable = " + instanceVariable);
}
// 构造函数
public InstanceInitializationExample() {
System.out.println("Constructor executed.");
}
public static void main(String[] args) {
System.out.println("Creating first object:");
InstanceInitializationExample obj1 = new InstanceInitializationExample();
System.out.println("Creating second object:");
InstanceInitializationExample obj2 = new InstanceInitializationExample();
}
}
输出:
Creating first object:
Instance Initialization Block executed. instanceVariable = 5
Constructor executed.
Creating second object:
Instance Initialization Block executed. instanceVariable = 5
Constructor executed.
总结
- 静态初始化块:用于初始化静态变量,在类加载时执行一次。
- 实例初始化块:用于初始化实例变量,在每次创建对象时执行,在构造函数之前执行。
通过使用初始化块,可以将一些通用的初始化代码集中到一个地方,避免在多个构造函数中重复代码。