二、常量的值并非编译期间可以确定的,则不会放入常量池,引用常量会导致类的初始化。代码如下:
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(不固定)
说明:
* 当一个常量的值并非编译期间可以确定的,那么其值就不会被放到调用类的常量池中。
* 这时在程序运行时,会导致主动使用这个常量所在的类,显然会导致这个类被初始化