返回

一览静态代码块与静态变量的运行和执行顺序

闲谈

当谈到编写干净整洁、可维护的代码时,Java 的静态变量和静态代码块是两种非常有用的工具。静态变量在整个程序中保持其值,而静态代码块在创建类时执行一次。这两种工具都可以让代码更易于阅读和理解。然而,新手程序员经常感到困惑的是静态变量和静态代码块的执行顺序。让我们通过一些详细的例子来弄清楚这个问题。

静态代码块

让我们从一个简单的 Java 程序开始,该程序使用静态代码块在控制台打印消息。

public class StaticExample {

    static {
        System.out.println("Static code block executed");
    }

    public static void main(String[] args) {
        System.out.println("Main method executed");
    }
}

当您运行此程序时,您将看到以下输出:

Static code block executed
Main method executed

如您所见,静态代码块在主方法之前执行。这是因为静态代码块在类加载时执行,而主方法在类实例化后执行。

静态变量

静态变量也是在类加载时初始化的。这意味着它们在任何对象被创建之前就已经存在。以下示例演示了这一点:

public class StaticExample {

    static int staticVariable = 10;

    public static void main(String[] args) {
        System.out.println("Static variable value: " + staticVariable);
    }
}

当您运行此程序时,您将看到以下输出:

Static variable value: 10

如您所见,静态变量的值在主方法执行之前就被初始化了。

静态代码块和静态变量的执行顺序

现在我们已经了解了静态代码块和静态变量的执行顺序,让我们来看一个稍微复杂一点的例子。以下示例演示了静态代码块和静态变量如何相互影响:

public class StaticExample {

    static int staticVariable = 10;

    static {
        System.out.println("Static code block executed");
        staticVariable = 20;
    }

    public static void main(String[] args) {
        System.out.println("Static variable value: " + staticVariable);
    }
}

当您运行此程序时,您将看到以下输出:

Static code block executed
Static variable value: 20

如您所见,静态代码块在主方法之前执行,并且静态变量的值在静态代码块中被修改了。这表明静态代码块可以用来初始化和修改静态变量。

结论

现在您已经了解了静态代码块和静态变量的执行顺序,以及它们如何相互影响。利用这些知识,您就可以编写出更干净整洁、可维护的 Java 代码。