El valor de hashCode de una cadena Java se calcula como ( String.hashCode () ):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
¿Hay alguna circunstancia (por ejemplo, versión de JVM, proveedor, etc.) en la que la siguiente expresión se evaluará como falsa?
boolean expression = "This is a Java string".hashCode() == 586653468
Actualización n. ° 1: Si afirma que la respuesta es "sí, existen tales circunstancias", entonces dé un ejemplo concreto de cuándo "Esto es una cadena de Java" .hashCode ()! = 586653468. Intente ser tan específico / concreto como sea posible.
Actualización n. ° 2: Todos sabemos que confiar en los detalles de implementación de hashCode () es malo en general. Sin embargo, estoy hablando específicamente sobre String.hashCode (), así que mantenga la respuesta enfocada en String.hashCode (). Object.hashCode () es totalmente irrelevante en el contexto de esta pregunta.