Heim >Java >javaLernprogramm >Warum teilen Javas Integer-Wrapper-Objekte nur Instanzen zwischen -128 und 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.
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.
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!