public class test2 {
public static void main(String[] args) {
System.out.println(test4.a);//类没有被加载
System.out.println(test4.b);//类被加载
System.out.println(test4.c);//类被加载
System.out.println(test4.d);//类被加载
System.out.println(test4.e);//类被加载
System.out.println(test4.o);//类被加载
}
}
public class test4 {
static {
System.out.println("test4 init");
}
public static final int a=1;
public static int b=2;
public static final Integer c=new Integer(3);
public static Integer d=new Integer(4);
public static final Integer e=5;
static final Object o=new Object();
}
当调用类的静态最终基本类型变量的时候,不会进行类的初始化,其他情况都会对类进行初始化.
public class test4 {
public static final class f{
public static final int g=5;
public static final Integer h=5;
static int a=3;
static Object object=new Object();
}
}
当内部类被static final 修饰时,读取内部类中的静态数据都不会引发外部类的初始化.
本文探讨了Java中类的静态变量加载时机及其对类初始化的影响。特别关注静态最终基本类型变量和其他静态变量的区别,以及它们如何触发类的加载过程。

被折叠的 条评论
为什么被折叠?



