在Java中,静态代码块(也称为静态初始化器)是一种特殊的代码块,用于初始化类级别的静态变量和执行仅需要执行一次的操作。静态代码块的执行时机是在类被加载到Java虚拟机(JVM)时进行的。具体来说,静态代码块的执行顺序是根据它们在类中的顺序。当类被加载时,静态代码块会按照它们在代码中出现的顺序被调用,并且每个静态代码块只执行一次。
需要注意的是,静态代码块仅在类被加载时执行一次,而不是在创建类的实例时执行。此外,静态代码块的执行顺序对于类的所有实例是相同的,因为它们都是基于同一个类加载的。
以下是一个简单的示例,说明了静态代码块的执行时机:
public class MyClass { static int staticVar1; static int staticVar2; static { System.out.println("静态代码块1开始"); staticVar1 = 10; System.out.println("静态代码块1结束"); } static { System.out.println("静态代码块2开始"); staticVar2 = 20; System.out.println("静态代码块2结束"); } public static void main(String[] args) { System.out.println("主方法开始"); System.out.println("main方法结束"); } }
输出结果:
静态代码块1开始 静态代码块1结束 静态代码块2开始 静态代码块2结束 主方法开始 main方法结束
从输出结果可以看出,静态代码块是在类被加载时按照它们在代码中的顺序执行的,并且每个静态代码块只执行了一次。