gpt4 book ai didi

java - 从内存中的对象访问静态变量

转载 作者:行者123 更新时间:2023-11-29 03:00:29 25 4
gpt4 key购买 nike

最近,我了解到除了类名之外,还可以从对象访问静态变量。

我认为静态变量驻留在堆中的永久代区域,而不是堆中的对象相关区域。

此外,我认为 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); // ???
}

最佳答案

I believe that static variables reside in the permanent generation area in the heap,

这样的静态字段可以在堆上的任何地方。

I think that m1.count refers the memory position of m1,

static 字段忽略引用。引用可以是 null,代码将正常运行。

I want to know how it works in memory

类的static 字段有一个特殊的对象。您可以通过堆转储获得此信息。引用是偶然的。

这个

Member m1 = new Member();
System.out.println(m1.count);

相同
Member m1 = null;
System.out.println(m1.count);

相同
System.out.println(Member.count); 

关于java - 从内存中的对象访问静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35329397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com