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:如果您声称答案是“是的,存在这种情况”,请给出一个具体的例子,说明何时“This is a Java string”.hashCode() != 586653468。尽可能具体和明确。
更新2:我们都知道通常依赖于hashCode()的实现细节是不好的。但是,我特别谈论的是String.hashCode() - 因此,请将答案集中在String.hashCode()上。Object.hashCode()在这个问题的背景下完全无关紧要。