La valeur hashCode d'une chaîne Java est calculée comme suit (String.hashCode () ):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Existe-t-il des circonstances (par exemple, la version JVM, le fournisseur, etc.) dans lesquelles l'expression suivante sera évaluée à false?
boolean expression = "This is a Java string".hashCode() == 586653468
Mise à jour n ° 1: Si vous prétendez que la réponse est "oui, il y a de telles circonstances" - alors veuillez donner un exemple concret de quand "Ceci est une chaîne Java" .hashCode ()! = 586653468. Essayez d'être aussi spécifique / concret que possible.
Mise à jour # 2: Nous savons tous que se fier aux détails d'implémentation de hashCode () est mauvais en général. Cependant, je parle spécifiquement de String.hashCode () - veuillez donc garder la réponse concentrée sur String.hashCode (). Object.hashCode () est totalement hors de propos dans le contexte de cette question.