Значение hashCode строки Java вычисляется как ( 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 () совершенно не имеет значения в контексте этого вопроса.