初始化块可以在对象创建时对实例变量进行初始化,为程序员提供了多种初始化方式。使用初始化块不仅可以对变量进行默认值设定,还能够在初始化的时候进行遍历、计算等复杂操作,从而降低代码的复杂度。例如:
public class Example {
private int number;
{
number = 10;
}
public Example() {
System.out.println("Number is: " + number);
}
}
初始化块不仅可以用于实例初始化,也可以用于静态初始化。静态初始化是指在类加载时进行初始化,静态成员变量和静态代码块都属于静态初始化。
public class Example {
private static int number;
static {
number = 10;
}
public static void main(String[] args) {
System.out.println("Number is: " + number);
}
}
虽然初始化块可以在对象创建时对实例变量进行初始化,但是初始化块的优先级却低于构造函数。这意味着,无论初始化块中改变了哪个实例变量的值,在构造函数中都可以对其进行更改。例如:
public class Example {
private int number;
{
number = 10;
}
public Example() {
number = 20;
System.out.println("Number is: " + number);
}
}
单例模式是一种常见的设计模式,其目的是让一个类仅有一个实例,并且提供一个全局访问点让程序可以直接访问该实例。使用初始化块可以在单例模式中实现线程安全。
public class Singleton {
private static Singleton instance;
private Singleton() {}
static {
instance = new Singleton();
}
public static Singleton getInstance() {
return instance;
}
}