在Java中,类的静态变量、静态代码块和静态方法的执行顺序遵循以下规则:
1、静态变量和代码快初始化:
-
- 静态变量(static variables)和代码块的初始化过程发生在类加载阶段(class loading phase),即当类首次被加载到JVM内存中时,静态变量按照它们在类中声明的顺序进行初始化。
2、静态方法:
-
- 静态方法(static methods)并不参与类加载阶段的初始化过程,它们只在被调用时执行。
- 静态方法与类的实例无关,可以直接通过类名来调用。
下面是一个演示静态变量、静态代码块和静态方法执行顺序的Java示例:
public class StaticDemo {
// 静态变量1
static int staticVar1 = initializeStaticVar1();
// 静态代码块1
static {
System.out.println("2、static code block exec");
}
// 静态变量初始化方法
private static int initializeStaticVar1() {
System.out.println("1、static variable exec");
return 1;
}
// 静态方法
private static void anotherStaticVarInitializer() {
System.out.println("3、static func exec");
// 假设这里执行某个初始化操作
}
public static void main(String[] args) {
// 此处调用静态方法或访问静态变量不影响上述静态成员的初始化顺序
anotherStaticVarInitializer();
}
}
// 输出结果:
1、static variable exec
2、static code block exec
3、static func exec