对象的引用在每次调试中都会发生变化
The reference of the object changes in every debug
毫无疑问,这个问题已经被问过(可能被问过很多次)但是我找不到正确的关键字来找到它们。
基本上,我的问题是关于对象引用的。我所知道的是对象引用指向对象在内存中的物理位置。但是,当我调试我的代码时,每次调试时,我都会得到同一对象的不同对象引用。
例如,当我第一次调试我的代码时,按钮的引用看起来像
INFO [sysout] [AWT-EventQueue-0]
[Ljava.awt.event.ComponentListener;@28be012c
第二次是
INFO [sysout] [AWT-EventQueue-0]
[Ljava.awt.event.ComponentListener;@31a056d8
我的相关问题是;
1.Is(@)符号后的部分(a.k.a@28be012c) 对象的引用,如果是,就是ip地址之类的东西,不断变化?
2.Is 有一种获取地址的方法,该地址不会随时间改变(如 Mac-地址)
任何与这些问题相关的答案或 link 将不胜感激。
编辑
我正在调试这个场景。有一个按钮,每次单击此按钮时,调试器都会在此时停止。也就是说程序不是从头开始的
Is the part after (@) symbol (a.k.a @28be012c) reference to the object, if yes, it is something like ip address, which changes
continiously?
@
之后的部分是Integer.toHexString(hashCode());
。 hashCode
方法并非设计为每次为不同的 运行 调用时 return 相同的值(即使正在创建的对象具有相同的值)。 returned 值与内存相关也不是强制性的。 JVM 规范指定唯一值应为 returned,但未指定 "how".
Is there a way to obtain an address, which does not change over time
(like a Mac-adress)
没有。 JVM 的每个 运行 几乎总是会给出不同的哈希码(除非您将 hashCode
方法重写为 return 其他方法。
毫无疑问,这个问题已经被问过(可能被问过很多次)但是我找不到正确的关键字来找到它们。
基本上,我的问题是关于对象引用的。我所知道的是对象引用指向对象在内存中的物理位置。但是,当我调试我的代码时,每次调试时,我都会得到同一对象的不同对象引用。
例如,当我第一次调试我的代码时,按钮的引用看起来像
INFO [sysout] [AWT-EventQueue-0] [Ljava.awt.event.ComponentListener;@28be012c
第二次是
INFO [sysout] [AWT-EventQueue-0] [Ljava.awt.event.ComponentListener;@31a056d8
我的相关问题是;
1.Is(@)符号后的部分(a.k.a@28be012c) 对象的引用,如果是,就是ip地址之类的东西,不断变化?
2.Is 有一种获取地址的方法,该地址不会随时间改变(如 Mac-地址)
任何与这些问题相关的答案或 link 将不胜感激。
编辑
我正在调试这个场景。有一个按钮,每次单击此按钮时,调试器都会在此时停止。也就是说程序不是从头开始的
Is the part after (@) symbol (a.k.a @28be012c) reference to the object, if yes, it is something like ip address, which changes continiously?
@
之后的部分是Integer.toHexString(hashCode());
。 hashCode
方法并非设计为每次为不同的 运行 调用时 return 相同的值(即使正在创建的对象具有相同的值)。 returned 值与内存相关也不是强制性的。 JVM 规范指定唯一值应为 returned,但未指定 "how".
Is there a way to obtain an address, which does not change over time (like a Mac-adress)
没有。 JVM 的每个 运行 几乎总是会给出不同的哈希码(除非您将 hashCode
方法重写为 return 其他方法。