Il valore hashCode di una stringa Java viene calcolato come ( String.hashCode () ):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Vi sono circostanze (ad esempio versione JVM, fornitore, ecc.) In base alle quali la seguente espressione verrà valutata come falsa?
boolean expression = "This is a Java string".hashCode() == 586653468
Aggiornamento n. 1: se affermi che la risposta è "sì, ci sono circostanze del genere" - per favore fai un esempio concreto di quando "Questa è una stringa Java" .hashCode ()! = 586653468. Prova ad essere specifico / concreto il più possibile.
Aggiornamento n. 2: Sappiamo tutti che fare affidamento sui dettagli di implementazione di hashCode () è generalmente negativo. Tuttavia, sto parlando specificamente di String.hashCode () - quindi ti preghiamo di mantenere la risposta focalizzata su String.hashCode (). Object.hashCode () è totalmente irrilevante nel contesto di questa domanda.