Autoboxing und Autounboxing in Java

Android Apps Programmieren Online-Kurs

Unser großes
Android Online-Kurs
Gesamtpaket



Weitere Infos

In diesem Beitrag stellen wir das automatische Ein- und Auspacken (Autoboxing und Autounboxing) von primitiven Datentypen aus Wrapper-Klassen vor.

Eine Wrapper-Klasse kapselt die jeweilige primitive Variable in einem sehr einfachen Objekt. Dabei stellt die Wrapper-Klasse einige Methoden für den Zugriff auf die primitive Variable und nützliche Funktionen zur Verfügung. Wer mehr über Wrapper-Klassen erfahren möchte, kann dies in unserer Einführung in Wrapper-Klassen tun.

Der Mechanismus des Autoboxing und Autounboxing wurde in Java 5 eingeführt. Mit Autoboxing und Autounboxing wird das Verfahren bezeichnet, mit dessen Hilfe automatisch zwischen primitiven Datentypen und Wrapper-Objekten konvertiert wird.

In der Praxis sieht das dann so aus: Einer Methode, die als Argument einen primitiven Datentypen erwartet, kann auch der entsprechende Wrapper-Datentyp übergeben werden.

Erwartet die Methode bspw. einen float-Wert, kann ihr auch ein Float-Objekt übergeben werden. Der übergebene Wert wird automatisch konvertiert, falls dies erforderlich ist.


In dem folgenden Java-Quellcode wird das Autoboxing und Autounboxing am Beispiel des float-Datentyps und der Float-Klasse vorgestellt:

Beispielanwendung: Autoboxing und Autounboxing in Java

/*
 * Beispielanwendung: Autoboxing und Autounboxing in Java
 */

public class BoxingTest
{

  public static void floatMethode (float zahl)
  {
    System.out.println(zahl);
  }

  public static void main (String[] args)
  {
    float wert1 = 10.99F;
    float wert2 = new Float (20.88F);

    Float wert3 = new Float (30.77F);
    Float wert4 = 40.66F;

    floatMethode(wert1);
    floatMethode(wert2);
    floatMethode(wert3);
    floatMethode(wert4);
  } 
}

In Zeile 15 wird der float-Wert 10.99 in die float-Variable wert1 gespeichert. Da sowohl der angegebene Wert als auch die Variable vom primitiven Datentyp float sind, muss nicht automatisch konvertiert werden.

In Zeile 16 wird der Variablen wert2, die vom primitiven Datentyp float ist, ein Float-Objekt mit dem inneren Wert 20.88 zugewiesen. Da es sich hier um zwei nicht kompatible Datentypen handelt, muss eine Konvertierung erfolgen. Dies geschieht automatisch. Der innere Wert des Float-Objekts wird automatisch „ausgepackt“ (Autounboxing) und anschließend der Variable wert2 zugewiesen.

In Zeile 18 wird der innere Wert des Float-Objekts 30.77 in die Float-Objektvariable wert3 gespeichert. Da sowohl der angegebene Wert als auch die Variable vom Objektdatentyp Float sind, muss nicht automatisch konvertiert werden.

In Zeile 19 wird der Objektvariablen wert4, die vom Wrapper-Datentyp Float ist, der primitive float-Wert 40.66 zugewiesen. Da es sich hier um zwei nicht kompatible Datentypen handelt, muss eine Konvertierung erfolgen. Der primitive float-Wert wird automatisch „eingepackt“ (Autoboxing) und anschließend der Objektvariable wert4 zugewiesen.

Starten wir nun die Beispielanwendung. In der unteren Abbildung ist die Kommandozeilenausgabe des Programms dargestellt:

Java Autoboxing Autounboxing

Autoboxing und Autounboxing bei Wrapper-Klassen in Java – Ausgabe der Beispielanwendung

Der folgende Link führt zurück zu unserem Übersichtsbeitrag über Variablen, Datentypen und Typumwandlung (type casting) in Java.

Zurück zum Java-Kurs.


Comments 1

  1. Pingback: Variablen, Datentypen und Typumwandlung (type casting) in Java

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.