如果没有覆盖hashCode()方法,那么在Java中的任何对象上调用hashCode()的结果是什么?
我正在寻找Object.hashCode()的算法.
此代码在Object.java中是本机代码.
这是因为
(a)代码在汇编中 - 从来没有在Java或任何其他HLL中
要么
(b)根本没有披露
?
在任何一种情况下,我都希望得到"如何计算hashCode()的算法(伪代码或一些详细解释)" - 它的计算中的参数和计算本身是什么?
请注意:这是 我正在寻找的Object的hashCode() -而不是像String或hashMap/table那样的.
// ================================================ ==========================
在新的Java文档 - JDK 8现在说
"The value returned by hashCode() is the object's hash code, which is the object's memory address in hexadecimal."
Run Code Online (Sandbox Code Playgroud) 我很好奇为什么要Object.toString()回报这个:
return getClass().getName() + "@" + Integer.toHexString(hashCode());
Run Code Online (Sandbox Code Playgroud)
与此相反:
return getClass().getName() + "@" + hashCode();
Run Code Online (Sandbox Code Playgroud)
将哈希码显示为十六进制而不是十进制有什么好处?