Tom*_*sky 10 java hash tostring hashcode
我很好奇为什么要Object.toString()回报这个:
return getClass().getName() + "@" + Integer.toHexString(hashCode());
Run Code Online (Sandbox Code Playgroud)
与此相反:
return getClass().getName() + "@" + hashCode();
Run Code Online (Sandbox Code Playgroud)
将哈希码显示为十六进制而不是十进制有什么好处?
Object.hashCode过去是根据对象所在的内存位置计算的.内存位置几乎普遍显示为十六进制.
默认返回值对toString哈希代码不是那么感兴趣,而是以一种方式来唯一地标识对象以进行调试,并且哈希代码很好地用于识别目的(实际上,类的组合) name +内存地址确实是唯一的;虽然哈希码不能保证是唯一的,但它通常很接近.
我不喜欢接受的答案.这是我的答案.
简短回答:因为十六进制更容易记忆,因为以十六进制表示的数字更短,并且具有比以十进制表示的相同数字更大的字符种类.
更长的答案:你不会使用哈希代码在头脑中进行算术运算,所以你真的不需要它是十进制的.另一方面,您很可能会以打算使用它的唯一方式使用它,也就是说,判断两个哈希码是指同一个对象,还是指不同的对象.换句话说,您将使用它作为对象的唯一标识符或助记符.因此,它是一个数字的事实是无关紧要的; 你不妨把它想象成一个哈希字符串.好吧,我们的大脑发现它更容易保留(为了比较的目的)由16个不同字符组成的短字符串,而不是仅由10个不同字符组成的较长字符串.
| 归档时间: |
|
| 查看次数: |
7522 次 |
| 最近记录: |