对于同一对象,Object.hashCode()
的输出是否需要在所有 JVM 实现上都相同?
例如,如果 "test".hashCode()
在 1.4 上返回 1
,它是否可能在 1.6 上返回 2
。或者如果操作系统不同,或者实例之间的处理器架构不同怎么办?
最佳答案
没有。 hashCode
的输出可能会在 JVM 实现之间发生变化,甚至在同一 JVM 上程序的不同执行之间。
但是,在你给出的具体例子中,"test".hashCode()
的值将实际上是一致的,因为 hashCode
的实现对于 String
objects 是 String
的 API 的一部分(参见 the Javadocs for java.lang.String 和 this other SO post)。
关于Java,Object.hashCode() 结果在所有 JVM/系统中都是常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516843/