Junior
¿Qué son las clases envolventes (Wrapper classes) en Java?
sobes.tech AI
Respuesta de la IA
Las clases envolventes en Java son clases que proporcionan una representación orientada a objetos de los tipos de datos primitivos. Permiten usar valores primitivos en contextos donde se requieren objetos, por ejemplo, en colecciones o al trabajar con concurrencia.
Clases envolventes principales:
ByteShortIntegerLongFloatDoubleBooleanCharacter
Ejemplos de uso:
Uso de primitivos:
// Tipo primitivo
int x = 10;
Uso de la clase envolvente:
// Clase envolvente
Integer y = new Integer(20); // Forma obsoleta de crear
Integer z = 30; // Autoboxing (transformación automática de primitivo a objeto)
Conversión entre primitivos y objetos envolventes:
- Autoboxing: Conversión automática de primitivo a objeto envolvente.
// Autoboxing int primitiveInt = 100; Integer wrapperInt = primitiveInt; - Unboxing: Conversión automática de objeto envolvente a primitivo.
// Unboxing Integer wrapperInteger = new Integer(200); int primitiveInteger = wrapperInteger;
Ventajas de las clases envolventes:
- Trabajar con colecciones: Las colecciones (
List,Set,Map) solo almacenan objetos. - Trabajar con
null: Los objetos envolventes pueden tener valornull, a diferencia de los primitivos. - Proporcionan métodos útiles: Las clases envolventes tienen métodos para convertir cadenas, comparar valores, etc. Por ejemplo,
Integer.parseInt(String s). - Trabajar con genéricos: Los genéricos solo funcionan con objetos.
Desventajas de las clases envolventes:
- Consumo de memoria: Los objetos envolventes ocupan más memoria que los primitivos.
- Reducción del rendimiento: La conversión automática (autoboxing y unboxing) puede reducir ligeramente el rendimiento.
Ejemplo de uso en una colección:
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)); // Creación explícita del objeto
int firstNum = numbers.get(0); // Unboxing
System.out.println(firstNum);
}
}