java 字符串上的 hashCode() 的一致性
Java 字符串的哈希值计算如下 (String.hashCode()):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
是否有任何情况(例如 JVM 版本、供应商等)以下表达式的计算结果为 false?
boolean expression = "This is a Java string".hashCode() == 586653468
更新 #1:如果你声称答案是“是的,有这种情况” - 那么请给出一个具体的例子,当“这是一个Java字符串”.hashCode() != 586653468。尽量具体/具体。
更新 #2:我们都知道,依赖hashCode()的实现细节通常是不好的。但是,我专门谈论的是String.hashCode() - 所以请把答案集中在String.hashCode()上。Object.hashCode() 在这个问题的上下文中是完全无关紧要的。