如果您执行:
System.out.println(someObj.toString());
您可能会看到输出
someObjectClassname @ hashcodenumber
我的问题:是否有任何具体原因显示为何显示hashCode编号?
答案 0 :(得分:34)
对象哈希码是唯一的标准标识符,可能允许您在Java中区分不同的任意对象。它不一定是唯一的,但是相等的对象通常具有相同的哈希码。
默认的toString()
方法显示对象类及其哈希码,以便您可以分别告诉不同的对象实例。由于默认情况下它也会在错误消息中使用,因此这很有意义。
有关详细信息,请参阅hashCode()
method的说明。
答案 1 :(得分:12)
添加有用的内容。
有些新手可能会混淆为什么通过toString()
返回的hascode值
与通过hashCode()
返回的内容不同。
这是因为toString()
方法返回相同哈希码的十六进制表示。
Integer.toHexString(object.hashCode());
将返回object.toString()
返回的相同值。
答案 2 :(得分:5)
来自javadocs:
尽可能合理, 由类定义的
hashCode
方法 对象确实返回不同的整数 对于不同的对象。 (这是 通常通过转换实现 对象的内部地址 变成一个整数,但是这个 实施技术不是 JavaTM编程所要求的 语言。)
hashCode出现在对象的字符串表示形式中,以便您可以将此对象与同一类的其他对象区分开来。这对调试很有用。