Der hashCode-Wert eines Java- Strings wird wie folgt berechnet: ( String.hashCode () ):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Gibt es Umstände (z. B. JVM-Version, Anbieter usw.), unter denen der folgende Ausdruck als falsch ausgewertet wird?
boolean expression = "This is a Java string".hashCode() == 586653468
Update Nr. 1: Wenn Sie behaupten, dass die Antwort "Ja, es gibt solche Umstände" lautet, geben Sie bitte ein konkretes Beispiel dafür, wann "Dies ist eine Java-Zeichenfolge" .hashCode ()! = 586653468. Versuchen Sie, so spezifisch / konkret zu sein wie möglich.
Update Nr. 2: Wir alle wissen, dass es im Allgemeinen schlecht ist, sich auf die Implementierungsdetails von hashCode () zu verlassen. Ich spreche jedoch speziell über String.hashCode (). Bitte konzentrieren Sie die Antwort auf String.hashCode (). Object.hashCode () ist im Kontext dieser Frage völlig irrelevant.