Heim > Java > javaLernprogramm > Hauptteil

Wie funktioniert die Methode „hashCode()' für nicht überschriebene Objekte in Java?

Barbara Streisand
Freigeben: 2024-10-31 17:08:30
Original
160 Leute haben es durchsucht

How Does the `hashCode()` Method Work for Non-Overridden Objects in Java?

Hash-Codes für nicht überschriebene Objekte in Java verstehen

In Java erben Objekte die Methode hashCode() von der Klasse Object. Wenn diese Methode nicht überschrieben wird, stellt sie eine Standardimplementierung zum Generieren einer eindeutigen Kennung für ein Objekt bereit.

Was ist der Standard-Hash-Code?

Wenn der hashCode() Wenn die Methode nicht überschrieben wird, folgt die HotSpot-JVM einem bestimmten Verhalten, um Hash-Codes zu generieren:

  1. Zufallszahl beim ersten Aufruf: Beim ersten Aufruf von hashCode() oder System.identityHashCode , eine Zufallszahl wird generiert und im Header des Objekts gespeichert.
  2. Nachfolgender Aufruf: Nachfolgende Aufrufe rufen diesen gespeicherten Wert ab.

JVM-Hash-Code Optionen

Das Verhalten der Standard-Hash-Code-Generierung kann mit der HotSpot-JVM-Option -XX:hashCode=n angepasst werden. Mögliche Werte sind:

  • 0: Globalen Zufallsgenerator verwenden (Standard in Java 7)
  • 5: Thread-lokalen XOR-Shift-Zufallsgenerator verwenden (Standard in Java 8)
  • 1: Objektzeiger gemischt mit Zufallswert verwenden (stabil zwischen GC-Zyklen)
  • 2: Immer 1 verwenden
  • 3: Automatisch inkrementierende Zahlen verwenden
  • 4: Verwenden Objektzeiger auf 32 Bit gekürzt

Hinweis: Selbst mit -XX:hashCode=4 zeigt der Hashcode möglicherweise nicht immer auf die genaue Objektadresse, da Objekte verschoben werden können in Erinnerung. Darüber hinaus sind Objektadressen nicht gleichmäßig verteilt, was möglicherweise zu unausgeglichenen Hash-Tabellen führt.

Daher ist es wichtig, die Methode hashCode() zu überschreiben, wenn Sie ein bestimmtes Hash-Code-Verhalten für Ihre Objekte benötigen.

Das obige ist der detaillierte Inhalt vonWie funktioniert die Methode „hashCode()' für nicht überschriebene Objekte in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!