如果您执行以下操作:
System.out.println(someObj.toString());
你可能看到的输出结果是
someObjectClassname@hashcodenumber
我的问题是:为什么会显示hashCode数值?
System.out.println(someObj.toString());
你可能看到的输出结果是
someObjectClassname@hashcodenumber
我的问题是:为什么会显示hashCode数值?
对象哈希码是Java中唯一的 标准 标识符,它可以让你区分不同的任意对象。它不一定是唯一的,但相等的对象通常具有相同的哈希码。
默认的 toString()
方法显示对象类和其哈希码,因此您希望能够区分不同的对象实例。由于它还默认用于错误消息中,这样做非常有意义。
更多信息,请参见hashCode()
方法的描述。
添加有用信息。
一些新手可能会对为什么通过toString()
返回的哈希码值与通过hashCode()
返回的值不同而感到困惑。这是因为toString()
方法返回相同哈希码的十六进制表示形式。
Integer.toHexString(object.hashCode());
将返回与object.toString()
返回的相同值。
根据javadoc所述:
hashCode
方法由Object类定义,尽可能地为不同的对象返回不同的整数值。(通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言并不要求使用此实现技术。)
hashCode出现在对象的字符串表示中,以便您可以将此对象与同一类的其他对象区分开。 这对于调试很有用。