【发布时间】:2013-09-24 10:32:03
【问题描述】:
谁能解释这是怎么回事?
public class MagicFinal {
public static void main(String[] args) {
System.out.println(A.s);
}
}
class A {
static {
System.out.println("class has been loaded");
}
public static final String s = "final";
public static final Integer i = 3;
}
控制台:
最终
这是什么?我不明白为什么没有加载类,我知道类总是在第一次调用时加载。字段s 在字符串池中,我看到 final 修饰符很神奇。
如果我删除 final 修饰符 (public static String s = "final") 我会得到
控制台:
类已加载
最终
注意:我已更改字段 i : public static final int i = 3; 并在控制台中显示它。
我得到了与字符串情况相同的情况。为什么?
【问题讨论】: