Skip to content

java类的生命周期测试

java
public class Test1 {
    public static void main(String[] args) {
        System.out.println("A");
        new Test1();
        new Test1();
    }

    public Test1() {
        System.out.println("B");
    }

    {
        System.out.println("C");
    }

    static {
        System.out.println("D");
    }
}

1. 类加载阶段(只执行一次静态代码块)

当 Java 程序启动时,Test1 类被加载到内存,静态代码块会立即执行。

java
static {
    System.out.println("D");
}

输出: D

2. 执行 main 方法

java
public static void main(String[] args) {
    System.out.println("A");
    ...
}

输出: A

3. 创建第一个 Test1 对象

java
new Test1();

创建对象时,按顺序执行:

  1. 实例初始化块(非静态代码块)
  2. 构造方法
java
{
    System.out.println("C");
}

public Test1() {
    System.out.println("B");
}

所以先输出 C,再输出 B

输出: C B

4. 创建第二个 Test1 对象

java
new Test1();

同样执行:

  • 实例初始化块 → C
  • 构造方法 → B

输出: C B

5. 最终输出顺序

D
A
C
B
C
B
/src/technology/dateblog/2025/10/20251016-java%E7%B1%BB%E7%9A%84%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E6%B5%8B%E8%AF%95.html