Auto Boxing/Unboxing in Java
Automatisches Boxen und Unboxing in Java vereinfacht Typkonvertierungen zwischen primitiven Datentypen und ihren entsprechenden Wrapper-Klassen. Diese in JDK 5.0 eingeführte Funktion bietet eine nahtlose Integration dieser beiden Darstellungen.
Auto-Boxing
Beim Zuweisen eines primitiven Werts zu einer Wrapper-Klassenvariablen erfolgt Auto-Boxing . Entgegen der Annahme, dass der Wrapper-Klassenkonstruktor verwendet wird, wird stattdessen die statische Methode valueOf() aufgerufen. Dies wird im Bytecode deutlich, der für den folgenden Code generiert wurde:
Integer n = 42;
0: bipush 42 2: invokestatic #16 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 5: astore_1
Die Methode valueOf() speichert die erstellten Objekte zwischen und sorgt so für Ressourceneffizienz.
Auto Unboxing
Umgekehrt erfolgt beim Extrahieren eines primitiven Werts aus einer Wrapper-Klassenvariablen ein automatisches Unboxing. Dieser Prozess nutzt die intValue()-Methode für Ganzzahlen (und analoge Methoden für andere Typen), wie im Bytecode für Folgendes dargestellt:
int n = Integer.valueOf(42);
0: bipush 42 2: invokestatic #16 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 5: invokevirtual #22 // Method java/lang/Integer.intValue:()I 8: istore_1
Diese Methode gibt einfach den im Wrapper-Objekt gespeicherten Grundwert zurück .
Zusammenfassend lässt sich sagen, dass beim automatischen Boxen/Unboxen die statischen Methoden valueOf() und intValue() (oder ähnliches) verwendet werden, um transparent zwischen primitiv und zu konvertieren Wrapper-Klassendarstellungen. Dies vereinfacht den Code und verbessert die Leistung durch die Verwendung von Caching-Mechanismen.
Das obige ist der detaillierte Inhalt vonWie funktioniert Auto Boxing/Unboxing in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!