En la Guía de conceptos de OOP, aprendimos que la programación orientada a objetos tiene que ver con los objetos. Los ocho tipos de datos primitivos byte, short, int, long, float, double, char y boolean no son objetos, Las clases de envoltura se utilizan para convertir tipos de datos primitivos en objetos., como int a Integer, etc. Tomemos un ejemplo simple para entender por qué necesitamos la clase contenedora en java.
Por ejemplo: Mientras trabajamos con colecciones en Java, usamos genéricos para la independencia de tipos así: ArrayList
Primitivo | Clase de envoltura |
booleano | Booleano |
carbonizarse | Personaje |
byte | Byte |
corto | Corto |
En t | Número entero |
largo | Largo |
flotante | Flotante |
Doble | Doble |
¿Por qué necesitamos la clase contenedora en Java?
1. Como se mencionó anteriormente, una de las razones por las que necesitamos contenedores es para usarlos en la API de colecciones. Por otro lado, los objetos contenedores conservan mucha más memoria que los tipos primitivos. Por lo tanto, use tipos primitivos cuando necesite eficiencia y use la clase contenedora cuando necesite objetos en lugar de tipos primitivos.
Los tipos de datos primitivos no son objetos, por lo que no pertenecen a ninguna clase. Al almacenar en estructuras de datos que solo admiten objetos, primero debemos convertir el tipo primitivo en objeto, lo que podemos hacer usando clases contenedoras.
Ejemplo:
HashMap<Integer, String> hm = new HashMap<Integer, String>();
Entonces, para la seguridad de los tipos, usamos clases contenedoras. De esta forma nos aseguramos de que estas claves HashMap sean de tipo entero y que los valores sean de tipo cadena.
2. Los objetos de la clase contenedora permiten valores nulos, mientras que el tipo de datos primitivo no.
Tomemos algunos ejemplos para comprender cómo funciona la conversión:
Ejemplo 1 de la clase Wrapper: conversión de un tipo primitivo en un objeto Wrapper
public class JavaExample{ public static void main(String args[]){ //Converting int primitive into Integer object int num=100; Integer obj=Integer.valueOf(num); System.out.println(num+ " "+ obj); } }
Producción:
100 100
Como puede ver, tanto el tipo de datos primitivo como el objeto tienen los mismos valores. Puede usar obj en lugar de num siempre que necesite pasar el valor de num como un objeto.
Ejemplo de Wrapper clase 2: conversión del objeto de la clase Wrapper a Primitive
public class JavaExample{ public static void main(String args[]){ //Creating Wrapper class object Integer obj = new Integer(100); //Converting the wrapper object to primitive int num = obj.intValue(); System.out.println(num+ " "+ obj); } }
Producción:
100 100