我有一个这样的测试代码:
public class Constants {
public static String c1 = "C1";
static {
System.out.println("Constants Class Loaded!");
}
}
public class Test {
public static void main(String[] args) {
String c1 = Constants.c1;
System.out.println(c1);
}
}
Run Code Online (Sandbox Code Playgroud)
它的输出是:
Constants Class Loaded!
C1
Run Code Online (Sandbox Code Playgroud)
因此,类 Constants 由 JVM 加载。但是如果我在类 Constants 的静态字段中添加一个 final 关键字:
public class Constants {
public static final String c1 = "C1";
static {
System.out.println("Constants Class Loaded!");
}
}
Run Code Online (Sandbox Code Playgroud)
它的输出变为:
C1
Run Code Online (Sandbox Code Playgroud)
似乎没有加载类 Constants。
我的本地环境是:
OS: Win7 x64
JVM: JRockit (build R28.2.0-79-146777-1.6.0_29-20111005-1808-windows-ia32, compiled …Run Code Online (Sandbox Code Playgroud)