Xiè*_*léi 4 java hash-code-uniqueness
虽然两个不同的对象可能具有相同的哈希码,但是,System.identityHashCode()似乎返回对象的内存指针.我想在32位JVM实现中没有例外,包括Sun JDK,Open JDK.但是,我没有检查源代码.在实践中,我可以假设两个具有相同的对象System.identityHashCode()是相同的吗?
答案是不.
System.identityHashCode()只返回Object.hashCode().
返回给定对象的相同哈希码,就像默认方法hashCode()返回的一样,无论给定对象的类是否覆盖hashCode().空引用的哈希码为零.
虽然为 Object.hashCode()
尽可能合理,Object类定义的hashCode方法确实为不同的对象返回不同的整数.(这通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要此实现技术.)
但是,Sun JDK中存在一个错误,表明两个对象可以返回相同的哈希码.
| 归档时间: |
|
| 查看次数: |
1123 次 |
| 最近记录: |