Java String 的 hashCode 值计算为 ( 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() 在这个问题的上下文中完全不相关。