附加到类型变量的数字



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

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

它是对象的"标识哈希代码"值的十六进制呈现。 它是 System.identityHashCode(Object) 方法返回的值。 此方法还用于为其类未重写 Object.hashcode() 方法的对象提供默认哈希码值。

它不一定是对象的内存地址,但实际上,标识哈希代码与对象的>>a<<内存地址之间存在关系。 (该值通常基于首次调用该方法时对象的地址。 然后,对象的地址可能会更改,但哈希代码值不会更改。

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

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

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

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

最新更新