Sobes.tech
Junior

Ce sunt clasele de tip wrapper în Java?

sobes.tech AI

Răspuns de la AI

Clasele wrapper în Java sunt clase care oferă o reprezentare orientată pe obiecte a tipurilor de date primitive. Ele permit utilizarea valorilor primitive în contexte în care sunt necesare obiecte, de exemplu, în colecții sau în lucrul cu multithreading.

Clasele wrapper principale:

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

Exemple de utilizare:

Utilizarea tipurilor primitive:

// Tip primitiv
int x = 10;

Utilizarea clasei wrapper:

// Clasa wrapper
Integer y = new Integer(20); // Mod vechi de creare
Integer z = 30; // Autoboxing (convertire automată a primitivului în obiect)

Conversia între primitive și obiecte wrapper:

  • Autoboxing: Conversie automată a primitivului în obiect wrapper.
    // Autoboxing
    int primitiveInt = 100;
    Integer wrapperInt = primitiveInt;
    
  • Unboxing: Conversie automată a obiectului wrapper în primitiv.
    // Unboxing
    Integer wrapperInteger = new Integer(200);
    int primitiveInteger = wrapperInteger;
    

Avantajele claselor wrapper:

  • Lucrul cu colecții: Colecțiile (List, Set, Map) stochează doar obiecte.
  • Lucrul cu null: Obiectele wrapper pot avea valoarea null, spre deosebire de primitive.
  • Oferă metode utile: Clasele wrapper au metode pentru conversia stringurilor, compararea valorilor etc. De exemplu, Integer.parseInt(String s).
  • Lucrul cu generice: Genericele funcționează doar cu obiecte.

Dezavantajele claselor wrapper:

  • Consumul de memorie: Obiectele wrapper ocupă mai multă memorie decât primitivele.
  • Scăderea performanței: Conversia automată (autoboxing și unboxing) poate reduce ușor performanța. Exemplu de utilizare în colecție:
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)); // Crearea explicită a obiectului

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