gpt4 book ai didi

java - 每次调试时对象的引用都会发生变化

转载 作者:行者123 更新时间:2023-12-02 03:18:52 25 4
gpt4 key购买 nike

毫无疑问,这个问题已经被问过(可能很多次),但我找不到正确的关键字来找到它们。

基本上,我的问题是关于对象引用的。我所知道的是,对象引用指向内存上的对象物理位置。但是,当我调试代码时以及每次调试时,我都会得到同一对象的不同对象引用。

例如,当我第一次调试代码时,按钮的引用看起来像

INFO [sysout] [AWT-EventQueue-0] [Ljava.awt.event.ComponentListener;@28be012c

第二次是

INFO [sysout] [AWT-EventQueue-0] [Ljava.awt.event.ComponentListener;@31a056d8

我的相关问题是;

1.(@)符号(又名@28be012c)后面的部分是否是对该对象的引用,如果是的话,它类似于ip地址,不断变化?

2.有没有办法获得一个不随时间变化的地址(如Mac地址)

任何与这些问题相关的答案或链接都将受到高度赞赏。

编辑

我正在这种情况下进行调试。有一个按钮,每次单击该按钮时,调试器都会在此时停止。也就是说,程序并不是从头开始的。

最佳答案

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方法并非设计为每次在不同的运行中调用它时都返回相同的值(即使正在创建的对象具有相同的值)。返回值与内存相关也不是强制的。 JVM 规范指定应返回唯一值,但没有指定“如何”。

Is there a way to obtain an address, which does not change over time (like a Mac-adress)

没有。 JVM 的每次运行几乎总是会给出不同的哈希码(除非您重写 hashCode 方法以返回其他内容。

关于java - 每次调试时对象的引用都会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39896128/

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