【发布时间】:2016-02-11 01:47:20
【问题描述】:
最近,我了解到除了类名之外,还可以从对象访问静态变量。
我相信静态变量驻留在堆中的永久代区域,而不是堆中的对象相关区域。
另外,我认为m1.count指的是m1的内存位置,并添加一些偏移量来访问count实例变量。
在我的逻辑中,m1.count 应该吐出错误,因为在内存中 m1 对象附近没有名为 count 的实例变量。
这怎么可能?我想知道它在内存中是如何工作的。 代码如下:
class Member{
public static int count;
}
public static void main(){
Member m1 = new Member();
System.out.println(m1.count); // ???
}
【问题讨论】:
-
你不是唯一一个。许多人认为这个“特性”是语言设计中的一个错误。