Se uno non sovrascrive il metodo hashCode
, qual è l'implementazione predefinita di hashCode
?Qual è l'implementazione predefinita di `hashCode`?
risposta
Quindi questa classe eredita hashCode
da uno dei suoi antenati. Se non lo sostituisce, viene utilizzato Object.hashCode.
Dal docs:
Per quanto ragionevolmente possibile, il metodo hashCode definito dalla classe Object non ritorno interi distinti per oggetti distinti. (Questo è tipicamente implementato convertendo l'indirizzo interno dell'oggetto in numero intero, ma questa tecnica attuazione non è richiesta dal linguaggio di programmazione JavaTM.)
Quindi predefinito attuazione è specifica JVM
Grazie, sì. Che aspetto ha l'implementazione di 'Object.hashCode()? –
@JohnThreepwood è un dettaglio di implementazione, è necessario indirizzare i documenti JVM per quello. –
http://stackoverflow.com/a/32454673/6785908 –
oggetto. hashcode() è un metodo nativo.
public native int hashCode();
Ciò significa che è implementato in codice specifico della piattaforma ed è esposto come un metodo nativo.
codiceper lo stesso sarà un codice compilato e non è disponibile withing JDK
questo existing question potrebbe fornire ulteriori informazioni.
Per impostazione predefinita, i metodi non sovrascritti vengono ereditati da Object
.
Se si guarda la documentazione del metodo, i valori di ritorno sono "[...] distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer [...])
". Il metodo in java.lang.Object
viene dichiarato come nativo, il che significa che l'implementazione viene fornita dalla JVM e può variare a seconda del proprio ambiente di runtime.
Un piccolo esempio:
Object o1 = new Object();
Object o2 = new Object();
System.out.println(o1.hashCode());
System.out.println(o2.hashCode());
stampe (usando il mio JDK6):
1660187542
516992923
rappresentazione un esagono del valore hashCode()
è utilizzato nella implementazione predefinita di toString()
a proposito: Running System.out.println(o1)
stampa qualcosa come
[email protected]
Buona spiegazione. – chipmunk
- 1. Qual è l'uso di hashcode in Java?
- 2. Qual è la differenza tra `##` e `hashCode`?
- 3. Qual è esattamente l'algoritmo utilizzato da hashCode di java.lang.Object
- 4. Qual è l'altezza predefinita di UITableViewCell?
- 5. qual è il modo migliore per implementare hashCode()?
- 6. Qual è lo scopo del metodo hashcode in java?
- 7. Qual è l'altezza predefinita su Androids TabLayout
- 8. Qual è l'impostazione predefinita per FACELETS_REFRESH_PERIOD?
- 9. Notebook IPython: qual è la codifica predefinita?
- 10. Hashcode di un numero
- 11. Overriding hashCode() - è abbastanza buono?
- 12. Qual è il codice hash di un oggetto se hashCode() non è sovrascritto?
- 13. Qual è la precisione predefinita di c printf% f?
- 14. Qual è la modalità di contesto dell'istanza predefinita?
- 15. Qual è la selezione predefinita di XSLT apply-templates?
- 16. Qual è la licenza di codice predefinita pubblicata su GitHub?
- 17. Qual è l'unità di stile predefinita in React Native?
- 18. hashCode strategie di attuazione
- 19. Deterministic hashCode() di java?
- 20. Qual è il modo ottimale per calcolare un hashcode per un set di punti?
- 21. Qual è la codifica predefinita per le stringhe C?
- 22. Qual è la serializzazione predefinita utilizzata da ASP.net HttpRuntime.Cache
- 23. Qual è la dimensione predefinita per UIImage in UITableViewCell?
- 24. Qual è la parte nltk predefinita del tagset vocale?
- 25. Qual è la sessione predefinita scaduta in Sinatra?
- 26. Qual è la dimensione predefinita del pool GPars?
- 27. Qual è la dimensione del buffer predefinita per StreamWriter
- 28. Implementazione hashCode() di Java Hashtable # rotta?
- 29. HashCode vs SHA-1
- 30. Implementazione HashCode dell'array Java
Informazioni sull'imp di default ementation puoi leggere [this] (http://blogs.tedneward.com/CommentView,guid,eca26c5e-307c-4b7c-931b-2eaf5b176e98.aspx) – CAMOBAP
l'implementazione predefinita è specifica JVM, ma in generale restituisce 'return Objects. hash (this.field1, this.field2, this.field3, ecc.); ' – NoName