Java String的hashCode值计算为(String.hashCode()):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Run Code Online (Sandbox Code Playgroud)
是否存在以下表达式将评估为false的任何情况(例如JVM版本,供应商等)?
boolean expression = "This is a Java string".hashCode() == 586653468
Run Code Online (Sandbox Code Playgroud)
更新#1:如果您声称答案是"是,有这种情况" - 那么请举一个具体的例子,说明"这是一个Java字符串".hashCode()!= 586653468.尝试具体/具体尽可能.
更新#2:我们都知道,依赖hashCode()的实现细节通常很糟糕.但是,我正在特别谈论String.hashCode() - 所以请将答案集中在String.hashCode()上.Object.hashCode()在这个问题的上下文中完全不相关.