Le hashCode de la valeur de Java Chaîne est calculé comme (Chaîne de caractères.hashCode()):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Existe-il des circonstances (dire JVM version, fournisseur, etc.) en vertu de laquelle l'expression suivante à false?
boolean expression = "This is a Java string".hashCode() == 586653468
Mise à jour #1: Si vous prétendez que la réponse est "oui, il y a de telles circonstances" - alors s'il vous plaît donner un exemple concret de lorsque "Cela est un Java string".hashCode() != 586653468. Essayez d'être aussi précis/concret que possible.
Mise à jour #2: Nous savons tous que le fait de compter sur les détails de mise en œuvre de hashCode() est mauvais en général. Cependant, je parle précisément de la Chaîne.hashCode() - veuillez donc garder la réponse ciblée à la Chaîne.hashCode(). Objet.hashCode() est totalement hors de propos dans le contexte de cette question.