2011-01-17 6 views

risposta

30

il codice hash oggetto è l'unico standard di identificatore che potrebbe consentire di dire diversi oggetti arbitrari a parte in Java. Non è necessariamente univoco, ma gli oggetti uguali normalmente hanno lo stesso codice hash.

Il metodo predefinito toString() mostra la classe dell'oggetto e il relativo codice hash in modo che possiate eventualmente distinguere diverse istanze di oggetto. Dal momento che è anche usato di default nei messaggi di errore, questo ha molto senso.

Vedere la descrizione dello hashCode() method per ulteriori informazioni.

+0

Grazie per la risposta. Scusa se ti ho chiesto questo, ci sono delle specifiche che spiegano questo? – Madhu

+0

@Madhu: vedere la mia modifica – thkala

+0

Leggere i commenti di javadoc su java.lang.Object ne spiega almeno alcune parti. – Erik

5

Dal javadocs:

Per quanto ragionevolmente possibile, il metodo hashCode definito dalla classe Object fa ritorno distinti interi per oggetti distinti. (Questo è tipicamente attuato convertendo l'indirizzo interno dell'oggetto in un numero intero, ma questa tecnica implementazione non è richiesto programmando la JavaTM linguaggio.)

Il hashCode appare nella rappresentazione di stringa dell'oggetto in modo da poter distinguere questo oggetto da altri oggetti della stessa classe. Questo può essere utile per il debug.

+0

attualmente System.identityHashCode utilizza attualmente un numero casuale assegnato (poiché l'indirizzo è lontano da "stabile") – bestsss

9

Aggiunta di qualcosa di utile.

Alcuni neofiti possono essere confusi sul motivo per cui il valore hascode restituito tramite toString() è diverso da quello che viene restituito tramite hashCode(). Questo perché il metodo toString() restituisce una rappresentazione esadecimale dello stesso codice hash.

Integer.toHexString(object.getHashcode); restituirà lo stesso valore restituito da object.toString().

Problemi correlati