Heim > Java > javaLernprogramm > Warum gibt „Integer'-Gleichheit in Java manchmal „false' zurück?

Warum gibt „Integer'-Gleichheit in Java manchmal „false' zurück?

Mary-Kate Olsen
Freigeben: 2024-11-30 03:08:13
Original
339 Leute haben es durchsucht

Why Does `Integer` Equality Sometimes Return `false` in Java?

Integer-Caching in Java: Die Optimierung verstehen

Neueste Beobachtungen haben zu Verwirrung hinsichtlich des Verhaltens von Integer-Objekten in Java geführt. Ein Codebeispiel zeigt, dass der Gleichheitsoperator „false“ für zwei Integer-Instanzen gleich 1000, aber „true“ für zwei Instanzen gleich 100 zurückgibt.

Dieses scheinbare Paradoxon rührt von Javas Caching-Mechanismus für Ganzzahlen her. Um die Leistung zu optimieren und den Speicherbedarf zu reduzieren, speichert die Java Virtual Machine (JVM) Integer-Objekte für Werte zwischen -128 und 127 zwischen. Dies bedeutet, dass Verweise auf Integer-Instanzen innerhalb dieses Bereichs immer gleich sind.

Daher in Im zweiten Codeausschnitt, in dem die Integer-Instanzen den Wert 100 darstellen, verweisen sowohl „c“ als auch „d“ auf dasselbe zwischengespeicherte Objekt, was beim Vergleich zu „true“ führt ihre Gleichberechtigung. Für Werte außerhalb dieses Bereichs, beispielsweise 1000, werden jedoch unterschiedliche Integer-Objekte erstellt, daher das „falsche“ Vergleichsergebnis.

Diese Optimierung wirkt sich auf die Leistung aus, indem sie die Speichernutzung reduziert, was zu einer effizienteren Cache-Nutzung führt. Außerdem entfällt der Aufwand für die Erstellung neuer Objekte für häufig verwendete Ganzzahlen, wodurch die Codeausführung schneller wird.

Weitere Recherchen zu diesem Thema finden Sie in den folgenden Ressourcen:

  • [Oracle's Java Leistungsoptimierung Richtlinien](https://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-tuning-6.html#integer_caching)
  • [Optimierung der Ganzzahlarithmetik in Java und C ](https://coincidental.com/research/number-boxes.pdf)

Das obige ist der detaillierte Inhalt vonWarum gibt „Integer'-Gleichheit in Java manchmal „false' zurück?. 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