Java,Object.hashCode() 结果在所有 JVM/系统中都是常量?

标签 java hashcode

对于同一对象,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.Stringthis other SO post)。

关于Java,Object.hashCode() 结果在所有 JVM/系统中都是常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516843/

相关文章:

java - 如何在 ListView 适配器线性布局中添加项目

Java哈希冲突概率

c# - 如果不能保证字符串或整数的 getHashCode() 是唯一的,为什么要使用它?

java - 从 equals() 调用 hashCode()

c# - C#中相同数组的不同哈希码

c# - 获取文件 SHA256 哈希码和校验和

java - 如何将此 (github) 源代码制作成库/jar?

java - 如何欺骗 NetworkInterface.getHardwareAddress() (Java)

java - 基于 Spring 代码的配置 - IllegalArgumentException : A ServletContext is required

java - 在 Swagger Editor 中更改 java 项目的默认包名称