在我们的团队中,我们发现了一些奇怪的行为,我们同时使用了 static
和 final
限定词。这是我们的测试课:
public class Test {
public static final Test me = new Test();
public static final Integer I = 4;
public static final String S = "abc";
public Test() {
System.out.println(I);
System.out.println(S);
}
public static Test getInstance() { return me; }
public static void main(String[] args) {
Test.getInstance();
}
}
当我们运行 main
方法时,我们得到的结果是:
null
abc
如果它两次都写 null
值,我会理解,因为静态类成员的代码是从上到下执行的。
有人能解释一下为什么会发生这种行为吗?