什么是初始化块?

更新于 2025-12-27

首先,初始化块 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();
    }
}

输出结果为:

静态初始化。
实例初始化。
构造函数。
实例初始化。
构造函数。

实例初始化块非常有用,当你希望无论使用哪个构造函数都执行某些代码时,或者在匿名类中需要进行实例初始化时,就可以使用它。