Sobes.tech
Junior

Was sind Wrapper-Klassen in Java?

sobes.tech KI

Antwort von AI

Die Wrapper-Klassen in Java sind Klassen, die eine objektorientierte Darstellung primitiver Datentypen bieten. Sie ermöglichen die Verwendung primitiver Werte in Kontexten, in denen Objekte erforderlich sind, z.B. in Sammlungen oder bei Multithreading.

Hauptsächliche Wrapper-Klassen:

  • Byte
  • Short
  • Integer
  • Long
  • Float
  • Double
  • Boolean
  • Character

Anwendungsbeispiele:

Verwendung von Primitive:

// Primitive Datentyp
int x = 10;

Verwendung der Wrapper-Klasse:

// Wrapper-Klasse
Integer y = new Integer(20); // Veraltete Erstellmethode
Integer z = 30; // Autoboxing (automatische Umwandlung von Primitive zu Objekt)

Umwandlung zwischen Primitiven und Wrapper-Objekten:

  • Autoboxing: Automatische Umwandlung des Primitivs in ein Wrapper-Objekt.
    // Autoboxing
    int primitiveInt = 100;
    Integer wrapperInt = primitiveInt;
    
  • Unboxing: Automatische Umwandlung des Wrapper-Objekts in ein Primitive.
    // Unboxing
    Integer wrapperInteger = new Integer(200);
    int primitiveInteger = wrapperInteger;
    

Vorteile der Wrapper-Klassen:

  • Arbeit mit Sammlungen: Sammlungen (List, Set, Map) speichern nur Objekte.
  • Arbeit mit null: Wrapper-Objekte können den Wert null haben, im Gegensatz zu Primitiven.
  • Bereitstellung nützlicher Methoden: Wrapper-Klassen haben Methoden zur Umwandlung von Strings, zum Vergleich von Werten usw. z.B. Integer.parseInt(String s).
  • Arbeit mit Generics: Generics funktionieren nur mit Objekten.

Nachteile der Wrapper-Klassen:

  • Speicherverbrauch: Wrapper-Objekte benötigen mehr Speicher als Primitive.
  • Leistungseinbußen: Automatisches Boxing und Unboxing können die Leistung leicht verringern.

Beispiel für die Verwendung in einer Sammlung:

import java.util.ArrayList;
import java.util.List;

public class WrapperExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(10); // Autoboxing
        numbers.add(new Integer(20)); // Explizite Objekterstellung

        int firstNum = numbers.get(0); // Unboxing
        System.out.println(firstNum);
    }
}