Значение hashCode Java String вычисляется как ( String.hashCode () ):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Существуют ли какие-либо обстоятельства (например, версия JVM, поставщик и т. Д.), При которых следующее выражение будет оцениваться как ложное?
boolean expression = "This is a Java string".hashCode() == 586653468
Обновление №1: если вы утверждаете, что ответ - «да, бывают такие обстоятельства», то приведите конкретный пример того, когда «Это строка Java» .hashCode ()! = 586653468. Постарайтесь быть максимально конкретным / конкретным насколько возможно.
Обновление №2: все мы знаем, что полагаться на детали реализации hashCode () в целом плохо. Однако я говорю конкретно о String.hashCode (), поэтому, пожалуйста, сосредоточьтесь на String.hashCode (). Object.hashCode () совершенно не имеет значения в контексте этого вопроса.