2011-01-17 7 views

Antwort

30

Der Objekthashcode ist der einzige Standard Bezeichner, mit dem Sie verschiedene beliebige Objekte in Java unterscheiden können. Es ist nicht unbedingt eindeutig, aber gleiche Objekte haben normalerweise denselben Hash-Code.

Die Standardmethode toString() zeigt die Objektklasse und ihren Hashcode, sodass Sie hoffentlich verschiedene Objektinstanzen unterscheiden können. Da es auch standardmäßig in Fehlermeldungen verwendet wird, ist das ziemlich sinnvoll.

Weitere Informationen finden Sie in der Beschreibung des hashCode() method.

+0

Vielen Dank für Ihre Antwort. Entschuldigung, dass ich Sie darum gebeten habe. Gibt es irgendwelche Spezifikationen, die das erklären? – Madhu

+0

@Madhu: siehe meine Bearbeitung – thkala

+0

Lesen der javadoc Kommentare auf java.lang.Object erklärt zumindest Teile davon. – Erik

5

Vom javadocs:

So viel wie vernünftigerweise praktikabel ist, die hashCode Methode definiert durch Klasse Objekt zurückgibt verschiedene ganze Zahlen für verschiedene Objekte. (Dies ist typischerweise implementiert durch die interne Adresse des Objekts in eine Ganzzahl umzuwandeln, aber diese Implementierungstechnik ist nicht erforderlich durch die JavaTM Programmierung Sprache.)

Die HashCode in der Stringdarstellung erscheinen des Objekts, so dass Sie dieses Objekt von anderen Objekten der gleichen Klasse unterscheiden können. Dies kann für das Debuggen nützlich sein.

+0

tatsächlich verwendet System.identityHashCode heutzutage eine zugewiesene Zufallszahl (da die Adresse weit von "stabil" entfernt ist) – bestsss

9

Hinzufügen etwas Nützliches.

Einige Neulinge können als zu verwechseln, warum der hascode Wert über toString() zurückgekehrt ist anders als das, was über hashCode() zurückgeführt wird. Dies liegt daran, dass die Methode toString() eine hexadezimale Darstellung desselben Hashcodes zurückgibt.

Integer.toHexString(object.getHashcode); wird den gleichen Wert zurückgeben, der von object.toString() zurückgegeben wird.

Verwandte Themen