java 类的初始化1

来源:互联网 发布:唐朝 阿拉伯 知乎 编辑:程序博客网 时间:2024/06/02 14:10
第一次
class Person{
public static final int a=new Random().nextInt(40);
static{
System.out.println("类被初始化");
}

}
public class Test01 {

public static void main(String[] args) {

System.out.println(Person.a);
}

}

运行结果
类被初始化
31

第二次
class Person{
public static final int a=4/2;
static{
System.out.println("类被初始化");
}

}
public class Test01 {

public static void main(String[] args) {

System.out.println(Person.a);
}

}

运行结果
2

个人理解
第二次的a是一个编译时的常量,在使用这个常量的时候不属于类的主动使用,不会导致Person类的初始化,而第一次的a只有在运行时才可以确定值,并不是一个编译时的常量属于主动使用会初始化Person类