Java-Wrapper-Objekte bilden eine entscheidende Brücke zwischen primitiven Datentypen und Objekten. Bei der Boxung ganzzahliger Werte wurde jedoch ein eigenartiges Verhalten beobachtet: Instanzen scheinen nur im Bereich von -128 bis 127 gemeinsam genutzt zu werden.
Bedenken Sie den folgenden Code:
Integer integer1 = 127; Integer integer2 = 127; System.out.println(integer1 == integer2); // outputs "true"
In diesem Fall werden Ganzzahl1 und Ganzzahl2 derselben Instanz zugewiesen, was durch die Ausgabe von „true“ beim Vergleich mit == belegt wird. Allerdings zeigt sich ein anderes Verhalten, wenn die Werte diesen Bereich überschreiten:
Integer integer1 = 128; Integer integer2 = 128; System.out.println(integer1 == integer2); // outputs "false"
Warum tritt dieses Phänomen auf?
Gemäß der Java Language Specification (JLS) wird dies ausdrücklich angegeben „Bestimmte gemeinsame Werte werden immer in nicht unterscheidbare Objekte eingepackt.“ Dieser Bereich ist definiert als „ein Byte oder ein Zeichen im Bereich u0000 bis u007f oder eine Ganzzahl oder kurze Zahl zwischen -128 und 127 (einschließlich)“.
Die Begründung für dieses Verhalten, wie in erläutert Ziel des JLS ist es, „sicherzustellen, dass das Verhalten in den meisten Fällen das gewünschte ist, ohne dass es zu einer unangemessenen Leistungseinbuße kommt, insbesondere bei kleinen Geräten.“ Durch die Beschränkung des Verhaltens gemeinsam genutzter Instanzen auf einen gemeinsamen Wertebereich stellt Java ein Gleichgewicht zwischen Leistung und erwartetem Verhalten her.
Das obige ist der detaillierte Inhalt vonWarum werden Javas Integer-Wrapper-Objekte nur zwischen -128 und 127 gemeinsam genutzt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!