在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方法结束
从输出结果可以看出,静态代码块是在类被加载时按照它们在代码中的顺序执行的,并且每个静态代码块只执行了一次。