Java intellij如何计算对象实例的4位ID?

Java intellij如何计算对象实例的4位ID?,java,debugging,intellij-idea,Java,Debugging,Intellij Idea,使用Intellij的调试器时,范围中的变量将使用4位标识符显示,在下面的屏幕截图中用红色标记 此标识符似乎是根据对象的标识计算的 对于给定的对象实例,使用什么确切的代码来获取4位数字?我认为您不应该依赖以任何特殊方式计算的id。它是IDEA(或JVM)内部的,我认为除了在执行期间跟踪对象之外,它没有任何相关性 但是,我发现在调试期间命名对象很有用。我相信快捷方式是F11(首先在调试窗口中单击一次对象),并给它一个在调试期间对您有意义的名称。在当前调试会话期间,该对象将始终保留该名称。确定这不仅

使用Intellij的调试器时,范围中的变量将使用4位标识符显示,在下面的屏幕截图中用红色标记

此标识符似乎是根据对象的标识计算的


对于给定的对象实例,使用什么确切的代码来获取4位数字?

我认为您不应该依赖以任何特殊方式计算的id。它是IDEA(或JVM)内部的,我认为除了在执行期间跟踪对象之外,它没有任何相关性


但是,我发现在调试期间命名对象很有用。我相信快捷方式是F11(首先在调试窗口中单击一次对象),并给它一个在调试期间对您有意义的名称。在当前调试会话期间,该对象将始终保留该名称。

确定这不仅仅是该对象的hashCode()的十六进制表示形式——与普通Java的做法完全相同?它肯定不是十六进制表示形式,因为4位数字始终为[0-9]{4}且不为[abcdef]。我假设它不依赖hashCode(),因为您可以在代码中重写hashCode。更合理的应该是类似System.identityHashCode()或内存地址的东西-这正是我不想知道的。你是对的。。。这有什么用?这是答案-但没有帮助,因为要调试的应用程序本身无法访问调试器的objectId。您应该澄清问题,并指定要使用此ID做什么,以及为什么需要在应用程序中计算它。否则,此问题应作为的完全副本关闭。这不会向代码公开对象名称或值,因此,它仅在调试器中查看时有用。例如,我想在我的应用程序中的不同点打印对象的id,并与调试器进行比较。