1

在 Eclipse 中,调试时,我看到变量后面附加了一个数字,例如 com.blah.blah.blah@82963fb

82963fb 是什么意思?是内存地址吗?

4

2 回答 2

5

它是对象的“识别哈希码”值的十六进制呈现。它是方法返回的值System.identityHashCode(Object)。此方法还用于为其类尚未覆盖该Object.hashcode()方法的对象提供默认哈希码值。

它不一定是对象的内存地址,但实际上在身份哈希码和对象的>>a<<内存地址之间存在关系。(该值通常基于第一次调用该方法时对象的地址。对象的地址随后可能会改变,但哈希码值不会。)

(整个字符串由默认Object.toString()方法生成。前面的部分@是对象的完全限定类名。)

于 2012-06-14T23:16:28.373 回答
1

您看到的是 Object.toString() 方法的输出。其定义为:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

所以,你看到@的是Integer.toHexString(hashCode())

于 2012-06-15T08:24:57.570 回答