Autoboxing und Unboxing in Java

Sheeraz Gul 12 Oktober 2023
  1. Auto-Boxing in Java
  2. Unboxing in Java
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:

  1. Wir müssen in jeder Methode einen primitiven Datentyp als Parameter übergeben. Diese Methode erfordert ein entsprechendes Wrapper-Klassenobjekt.
  2. Beim Zuweisen eines primitiven Datentyps zu einer Variablen mit einer entsprechenden Wrapper-Klasse.
  3. 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:

  1. Beim Übergeben eines Objekts einer Wrapper-Klasse an eine Methode, die einen Wert mit primitivem Typ erfordert.
  2. Wenn das Wrapper-Klassenobjekt der entsprechenden primitiven Variablen zugewiesen wird.
  3. 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 Gul avatar Sheeraz Gul avatar

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