Значення хеш- коду 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 () абсолютно не має значення в контексті цього питання.