二、常量的值并非编译期间可以确定的,则不会放入常量池,引用常量会导致类的初始化。代码如下:
public class MyTest03 {
public static void main(String[] args) {
System.out.println(MyParent03.str);
}
}
class MyParent03 {
public static final String str = UUID.randomUUID().toString();
static {
System.out.println("MyParent03 loading");
}
}
结果:
MyParent03 loading
8406eea8-45da-4f88-970b-ccb3b7ef3543(不固定)
说明:
* 当一个常量的值并非编译期间可以确定的,那么其值就不会被放到调用类的常量池中。
* 这时在程序运行时,会导致主动使用这个常量所在的类,显然会导致这个类被初始化