如果Statics类的实例设置为null,为什么不抛出NullPointerException?我知道静态变量在所有实例之间共享,它们只有1个副本。这是否意味着静态变量不在堆上?嗯,我想这就是它意味着什么?
所以我想更大的问题是静态变量/方法在哪里生存?
请考虑以下事项:
public class Statics {
public static int count = 0;
public static void main(String[] args){
System.out.println(Statics.count);
}
}
public class StaticsTest {
public static void main(String[] args){
Statics t1 = new Statics();
t1 = null;
System.out.println(t1.count); //Output of zero was printed which I didn't expect.
}
}
如果他们不住在堆里,我猜他们没有收集垃圾?
答案 0 :(得分:1)
根本没有堆,内存,GC ......
关键是静态成员属于类而不是实例。因此Java只需要知道它的类型,尽管实例为null