gpt4 book ai didi

java - 不同机器上字符串的哈希码返回相同的值

转载 作者:行者123 更新时间:2023-11-30 03:23:04 24 4
gpt4 key购买 nike

我读到 JVM 实例中的哈希码返回相同的值。但在另一个 JVM 实例中,可能不会返回相同的值。我尝试了以下程序:

public class demo {
public static void main(String[] args) {
String s = new String("Hello");
System.out.println(s.hashCode());
}
}

该程序返回的值与我在计算机上重新运行它的次数相同。另外,我尝试在其他机器上运行相同的程序,并且在任何地方都得到相同的值。难道只是巧合吗?

我有一个场景,根据字符串值,我将确定要遵循的下一个业务逻辑。所以目前我正在做

switch(s.hashcode()%4){
case 0:....
case 1:....
}

这应该总是可以正常工作吗?

最佳答案

hashCode 在运行中是否相同(是否是确定性的)取决于类。例如,String有确定性的hashCode;对象没有。一般来说,您不应期望 hashCode 具有确定性。

此外,hashCode 也不是随机的。例如,对象的 hashCode 只是对象的内存地址,它可能总是能被 4 整除//

关于java - 不同机器上字符串的哈希码返回相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30875035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com