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