Autoboxing und Unboxing in Java
Autoboxing konvertiert primitive Datentypen in ihren äquivalenten Wrapper-Typ, und Unboxing ist die Konvertierung von Wrapper-Typen in primitive Datentypen. Diese Funktion ist in Java integriert.
Dieses Tutorial beschreibt und demonstriert die Verwendung von Auto-Boxing und Unboxing in Java.
Auto-Boxing in Java
Wie oben erwähnt, konvertiert Auto-Boxing primitive Datentypen in dieselbe Wrapper-Typklasse wie ein Objekt. Zum Beispiel long
zu Long
oder int
zu Integer
.
Die Liste dieser primitiven Datentypen und ihrer entsprechenden Wrappertypklasse ist unten.
Primitiver Typ | Wrapper-Typ |
---|---|
int |
Integer |
boolean |
Boolean |
double |
Double |
float |
Float |
byte |
Byte |
char |
Character |
long |
Long |
short |
Short |
Es gibt drei Fälle, in denen wir Auto-Boxing in Java verwenden können:
- Wir müssen in jeder Methode einen primitiven Datentyp als Parameter übergeben. Diese Methode erfordert ein entsprechendes Wrapper-Klassenobjekt.
- Beim Zuweisen eines primitiven Datentyps zu einer Variablen mit einer entsprechenden Wrapper-Klasse.
- Während der Arbeit mit Collection-Framework-Klassen muss der Compiler Autoboxing in Java durchführen.
Es gibt drei Fälle. Versuchen wir, für jeden Fall ein Beispiel zu erstellen. Siehe das Beispiel für den ersten Fall:
package Delfstack;
public class Autoboxing_Test {
public static void Number(Integer x) {
System.out.println(x);
}
public static void main(String[] args) {
// Compiler performs Autoboxing here. it converts primitive type to wrapper type Integer object.
int x = 10;
Number(x);
}
}
Wir haben einen primitiven Typ int
als Parameter an eine Methode übergeben, die die Wrapper-Klasse Integer
erfordert; der Compiler führt hier Autoboxing durch. Siehe Ausgabe:
10
Siehe das Beispiel für den zweiten Fall:
package Delfstack;
public class Autoboxing_Test {
public static void main(String[] args) {
// Assigning primitive long value to Wrapper Long variable x. Compiler performs autoboxing
Long x = 430L;
// Assigning primitive char value to Wrapper Character variable y. Compiler performs autoboxing
Character y = 'a';
System.out.println(x);
System.out.println(y);
}
}
Wir haben der Wrappertyp-Variablen primitive Datentypwerte zugewiesen, und der Compiler hat Autoboxing durchgeführt. Siehe Ausgabe:
430
a
Siehe das Beispiel für den dritten Fall:
package Delfstack;
import java.util.ArrayList;
public class Autoboxing_Test {
public static void main(String[] args) {
ArrayList<Long> Long_List = new ArrayList<Long>();
// while working with collections framework the compiler performs autoboxing
Long_List.add(220L);
Long_List.add(330L);
System.out.println(Long_List);
}
}
Beim Arbeiten mit Sammlungs-Framework-Klassen muss der Compiler wie im obigen Code Autoboxing in Java durchführen; Wir fügen Elemente des primitiven Typs long
zur Liste des Wrapper-Typs Long
hinzu. Siehe Ausgabe:
[220, 330]
Unboxing in Java
Das Unboxing in Java konvertiert ein Objekt einer Wrapper-Klasse in denselben primitiven Datentyp; es ist das Gegenteil von Autoboxing. Wenn Sie beispielsweise Integer
in int
oder Long
in long
umwandeln, kann die vorherige Tabelle auch für Boxen verwendet werden und umgekehrt.
Das Unboxing kann auch in drei Fällen angewendet werden:
- Beim Übergeben eines Objekts einer Wrapper-Klasse an eine Methode, die einen Wert mit primitivem Typ erfordert.
- Wenn das Wrapper-Klassenobjekt der entsprechenden primitiven Variablen zugewiesen wird.
- Beim Arbeiten mit Sammlungsframeworks.
Probieren wir für jeden Fall ein Beispiel in Java aus. Siehe das Beispiel für den ersten Fall:
package Delfstack;
public class Unboxing_Test {
public static void Number(int x) {
System.out.println(x);
}
public static void main(String[] args) {
Integer x = new Integer(340);
// We passed Integer wrapper class object, the compiler will convert it to int because method
// requires int
Number(x);
}
}
Der Compiler führt ein Unboxing durch, während er ein Objekt einer Wrapper-Klasse an eine Methode übergibt, die einen Wert mit einem primitiven Typ erfordert. Siehe Ausgabe:
340
Das Beispiel für den zweiten Fall:
package Delfstack;
public class Unboxing_Test {
public static void main(String[] args) {
Long x = new Long(340L);
Integer y = new Integer(450);
// Performing unboxing here. assigning Long object to primitive long type similarly Integer to
// int
long a = x;
int b = y;
System.out.println(a);
System.out.println(b);
}
}
Der Compiler führt das Unboxing durch, wenn das Wrapper-Klassenobjekt der entsprechenden primitiven Variablen zugewiesen wird. Siehe Ausgabe:
340
450
Das Beispiel für den dritten Fall:
package Delfstack;
import java.util.ArrayList;
public class Unboxing_Test {
public static void main(String[] args) {
ArrayList<Long> Long_List = new ArrayList<Long>();
Long_List.add(230L);
Long_List.add(340L);
Long_List.add(450L);
// The get method returns an Long object and we assigned it to the long primitive type
long x = (long) Long_List.get(0);
long y = (long) Long_List.get(1);
long z = (long) Long_List.get(2);
System.out.println(x);
System.out.println(y);
System.out.println(z);
}
}
Bei der Arbeit mit Sammlungs-Frameworks wie ArrayList
führt der Compiler ein Unboxing durch, wenn wir versuchen, ArrayList
-Listenelemente Variablen vom primitiven Typ zuzuweisen. Siehe Ausgabe:
230
340
450
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook