在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())