java中代码块、方法-执行顺序

在 Java 中,代码块、静态代码块、构造方法、静态方法和普通方法的执行顺序。这是 Java 类初始化过程中的核心知识点。

一、执行顺序详解

Java 中这些元素的执行遵循一个固定的顺序,我们可以通过一个示例来清晰地展示:

public class ExecutionOrderDemo {

    // 静态变量
    private static String staticVar = "静态变量初始化";

    // 普通成员变量
    private String instanceVar = "实例变量初始化";

    // 静态代码块
    static {
        System.out.println(staticVar);
        System.out.println("静态代码块执行");
        // 可以调用静态方法
        staticMethod();
    }

    // 普通代码块(实例代码块)
    {
        System.out.println(instanceVar);
        System.out.println("普通代码块执行");
        // 可以调用普通方法
        instanceMethod();
    }

    // 构造方法
    public ExecutionOrderDemo() {
        System.out.println("构造方法执行");
    }

    // 静态方法
    public static void staticMethod() {
        System.out.println("静态方法执行");
    }

    // 普通方法
    public void instanceMethod() {
        System.out.println("普通方法执行");
    }

    public static void main(String[] args) {
        System.out.println("--- 创建第一个对象 ---");
        ExecutionOrderDemo demo1 = new ExecutionOrderDemo();
        
        System.out.println("--- 创建第二个对象 ---");
        ExecutionOrderDemo demo2 = new ExecutionOrderDemo();
        
        System.out.println("--- 主动调用方法 ---");
        demo1.staticMethod();
        demo1.instanceMethod();
    }
}

运行结果

静态变量初始化
静态代码块执行
静态方法执行
--- 创建第一个对象 ---
实例变量初始化
普通代码块执行
普通方法执行
构造方法执行
--- 创建第二个对象 ---
实例变量初始化
普通代码块执行
普通方法执行
构造方法执行
--- 主动调用方法 ---
静态方法执行
普通方法执行

二、执行顺序总结

从上述运行结果,我们可以总结出明确的执行顺序:

  1. 类加载阶段(仅一次)

    • 静态变量初始化:在类第一次被使用时初始化。
    • 静态代码块执行:紧随静态变量之后执行,且只执行一次
  2. 对象实例化阶段(每次创建对象)

    • 实例变量初始化:每次创建对象时初始化。
    • 普通代码块执行:紧随实例变量之后执行。
    • 构造方法执行:最后执行,完成对象的初始化。
  3. 方法调用阶段(按需执行)

    • 静态方法:可以通过类名直接调用,也可以通过对象调用,但它属于类本身,不依赖于实例。
    • 普通方法:必须通过实例化的对象才能调用,属于对象的行为。

三、关键点回顾

  1. 静态元素优先:静态变量和静态代码块在类加载时执行,且只执行一次。
  2. 实例元素随后:实例变量、普通代码块和构造方法在每次创建对象时执行,顺序是变量初始化 → 普通代码块 → 构造方法。
  3. 方法按需调用:静态方法和普通方法不会自动执行,需要显式调用才会执行。
posted @ 2025-11-24 11:18  吴川华仔  阅读(18)  评论(0)    收藏  举报