在Java中,静态代码块(static block)是在类加载时执行的,而不是在每次创建对象时执行的。当类被加载时,静态代码块会按照在类中出现的顺序被执行一次。这意味着无论创建多少个对象,静态代码块只会执行一次。
具体执行时机如下:
- 当类被首次加载时,静态代码块会被执行。类的加载通常发生在使用该类之前,例如创建对象实例、调用静态方法或访问静态变量时。
- 静态代码块在类加载过程中只执行一次,也就是说它在整个应用程序生命周期中只执行一次。无论创建多少个类的实例,静态代码块只会在类加载时执行一次。
静态代码块常用于在类加载时进行一些初始化操作,例如初始化静态变量、加载配置文件、进行日志记录等。通过在静态代码块中执行这些操作,可以确保它们在类加载时被执行,而不依赖于对象的创建。
下面是一个示例,展示了静态代码块的执行时机:
public class PreCache {
static {
System.out.println("Static block is executed.");
}
public static void main(String[] args) {
PreCache obj1 = new PreCache();
PreCache obj2 = new PreCache();
}
}
输出结果:
Static block is executed.
可以看到,在执行 main
方法时,静态代码块会被执行一次,输出相应的信息。无论创建多少个对象实例,静态代码块只会执行一次。
需要注意的是,静态代码块的执行顺序与其在类中的定义顺序有关。如果一个类中包含多个静态代码块,它们会按照在类中出现的顺序依次执行。
总结来说,静态代码块在类加载时执行,并且在整个应用程序生命周期中只执行一次。它常用于在类加载时进行一些初始化操作,不会在每次创建对象时执行。