Heim > Java > javaLernprogramm > Java-Ganzzahlvergleich: Wann funktioniert „==' und wann sollten Sie „equals()' verwenden?

Java-Ganzzahlvergleich: Wann funktioniert „==' und wann sollten Sie „equals()' verwenden?

Patricia Arquette
Freigeben: 2024-12-25 22:49:16
Original
889 Leute haben es durchsucht

Java Integer Comparison: When Does `==` Work, and When Should You Use `equals()`?

Integer-Referenzgleichheit vs. Wertgleichheit

In Java sind Grundelemente wie int und Objektwrapper wie Integer nicht austauschbar. Die Frage stellt ein Problem dar, bei dem Integer-Objekte mit gleichen int-Werten fälschlicherweise mit == verglichen werden, was zu unerwarteten wahren Ergebnissen führt.

Die Antwort liegt in der Zwischenspeicherung von Integer-Werten durch die JVM. Aus Leistungsgründen verwendet die JVM vorab zugewiesene Objekte innerhalb eines bestimmten Bereichs (-128 bis 127) wieder. Beim Vergleich von Integer-Objekten mit == prüft die JVM die Referenzgleichheit und nicht die Wertgleichheit. Für Werte innerhalb dieses zwischengespeicherten Bereichs impliziert Referenzgleichheit Wertegleichheit.

Im bereitgestellten Codebeispiel liegen die Integer-Werte jedoch außerhalb dieses zwischengespeicherten Bereichs, sodass Referenzgleichheit keine Wertegleichheit garantiert. Stattdessen sollte equal() verwendet werden, um ganzzahlige Werte auf Gleichheit zu vergleichen.

Der Stackoverflow-Link, auf den in der Antwort auf die Frage verwiesen wird, bietet weitere Einblicke in die Komplexität des Autoboxings und warum der Compiler es nicht immer „einfach zum Laufen bringen“ kann.

Zusammenfassend lässt sich sagen, dass es zwar bequem ist, == für Grundelemente zu verwenden, es ist jedoch wichtig, die Einschränkungen der Referenzgleichheit zu verstehen, wenn man mit Objekt-Wrappern wie z. B. arbeitet Ganzzahl. Für Wertgleichheitsvergleiche sollte stattdessen equal() verwendet werden.

Das obige ist der detaillierte Inhalt vonJava-Ganzzahlvergleich: Wann funktioniert „==' und wann sollten Sie „equals()' verwenden?. 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