Heim > Java > javaLernprogramm > Warum teilen Javas Integer-Wrapper-Objekte nur Instanzen zwischen -128 und 127?

Warum teilen Javas Integer-Wrapper-Objekte nur Instanzen zwischen -128 und 127?

Barbara Streisand
Freigeben: 2024-11-27 11:32:10
Original
468 Leute haben es durchsucht

Why Do Java's Integer Wrapper Objects Share Instances Only Between -128 and 127?

Ganzzahlige Wrapper-Objekte und gemeinsam genutzte Instanzen: Über den Wert von 127 hinaus

Die Programmiersprache Java bietet Wrapper-Klassen zur Darstellung primitiver Datentypen als Objekte . Integer ist eine solche Wrapper-Klasse, die den primitiven Typ int umschließt. Ein faszinierender Aspekt von Integer-Wrapper-Objekten ist ihr Verhalten gegenüber gemeinsam genutzten Instanzen.

Im Bereich von 127

Wie die Frage richtig bemerkt, haben Integer-Wrapper-Objekte tatsächlich dasselbe gemeinsam Instanz im Wertebereich von [-128, 127]. Dieses Verhalten wird explizit durch die Java Language Specification (JLS) in Abschnitt 5.1.7 definiert:

If the value p being boxed is ... an int or short number between -128 and 127 (inclusive), then ... any two boxing conversions of p ... will always yield an identical reference.
Nach dem Login kopieren

Dies bedeutet, dass innerhalb dieses Wertebereichs alle Integer-Wrapper-Objekte, die denselben primitiven int-Wert darstellen, auf den verweisen gleiche Instanz im Speicher.

Jenseits von 128

Dieses Freigabeverhalten gilt jedoch nicht Fahren Sie über den Wert 128 hinaus fort. Wenn ein int-Wert außerhalb des angegebenen Bereichs [-128, 127] in ein Integer-Objekt eingefügt wird, kann die Implementierung für jeden eindeutigen Wert eine neue Instanz erstellen. Dies wird vom JLS im selben Abschnitt bestätigt:

This formulation disallows any assumptions about the identity of the boxed values on the programmer's part. This would allow (but not require) sharing of some or all of these references.
Nach dem Login kopieren

Zusammenfassend lässt sich sagen, dass Integer-Wrapper-Objekte dieselbe Instanz nur innerhalb des Wertebereichs [-128, 127] gemeinsam nutzen, da dies explizit durch die Java-Sprache angegeben wird Spezifikation. Diese Optimierung bietet Leistungsvorteile für gängige Szenarien mit primitiven Werten innerhalb dieses Bereichs, ohne die Flexibilität der Verwendung verschiedener Instanzen für eindeutige Werte außerhalb dieses Bereichs zu beeinträchtigen.

Das obige ist der detaillierte Inhalt vonWarum teilen Javas Integer-Wrapper-Objekte nur Instanzen zwischen -128 und 127?. 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