Sobes.tech
Junior

Wie würden Sie Referenztypen in Primitive umwandeln und umgekehrt?

sobes.tech KI

Antwort von AI

Bei Referenztypen (z.B. Integer, Double, Boolean) wird Auto-Boxing (Automatisches Einpacken) für primitive Typen (int, double, boolean) verwendet. Die JVM wandelt den Referenztyp automatisch in seinen primitiven Äquivalent um, wenn dies erforderlich ist.

// Primitive Typen
int primitiveInt = 10;

// Erstellen eines Referenztyps aus einem primitiven Wert (Auto-Boxing)
Integer objectInt = primitiveInt; // Automatische Umwandlung von int in Integer

// Umwandlung eines Referenztyps zurück in einen primitiven Typ (Auto-Unboxing)
int newPrimitiveInt = objectInt; // Automatische Umwandlung von Integer in int

Für primitive Typen in Referenztypen (z.B. int in Integer, double in Double, boolean in Boolean) wird Auto-Boxing verwendet. Die JVM erstellt automatisch ein Objekt des Referenztyps aus einem primitiven Wert.

// Primitive Typen
double primitiveDouble = 3.14;

// Erstellen eines Referenztyps aus einem primitiven Wert (Auto-Boxing)
Double objectDouble = primitiveDouble; // Automatische Umwandlung von double in Double

// Umwandlung eines Referenztyps zurück in einen primitiven Typ (Auto-Unboxing)
double newPrimitiveDouble = objectDouble; // Automatische Umwandlung von Double in double

Es ist wichtig zu beachten, dass beim Umwandeln eines Referenztyps in einen primitiven Typ (Unboxing) eine NullPointerException auftreten kann, wenn der Referenztyp den Wert null hat.

Außerdem wurden vor der Einführung von Auto-Boxing/Unboxing explizite Methoden der Wrapper-Klassen verwendet, wie intValue(), doubleValue(), booleanValue(), um Referenztypen in primitive umzuwandeln, und Konstruktoren oder statische Methoden valueOf(), um primitive in Referenztypen umzuwandeln. Auto-Boxing/Unboxing hat diesen Prozess erheblich vereinfacht.

// Explizite Umwandlung vor Auto-Boxing/Unboxing
Integer explicitInteger = new Integer(25); // Verwendung des Konstruktors (veraltet)
int explicitInt = explicitInteger.intValue(); // Verwendung der Methode intValue()

// Verwendung der statischen Methode valueOf() (bevorzugt)
Integer valueOfInteger = Integer.valueOf(50);
int valueOfInt = valueOfInteger.intValue();