import java.util.*;
public class ReflectDemo
{ static Random rand=new Random();
public static void main(String... args){
//Class clazz=Info.class;//不会初始化类
/*
ClassLoader 在加载类是 分三步
1 加载
2 链接
3 初始化
*/
//System.out.println(Info.NUM);//类不会被初始化 读取编译时期常量时 不初始化
//System.out.println(Info.NUM1);//这句会初始化类 因为在编译时期值还未被确定
//System.out.println(Info.NUM2);//会初始化 NUM2不是编译时期常量
}
}
class Info{
static final int NUM =9;
static int NUM2=8;
static final int NUM1=ReflectDemo.rand.nextInt(100);
static {
System.out.println("info类被初始化了");
}
} |
|