tipos primitivos envoltorios datos concepto java

primitivos - ¿Por qué hay clases de envoltorio en Java?



tipos de datos en java primitivos y envoltorios (9)

Esta pregunta ya tiene una respuesta aquí:

Sé lo que es una clase de envoltorio, envuelven tipos primitivos (por ejemplo, int, double, etc.) a objetos de su clase respectiva.

Pero, ¿por qué necesitamos clases de Wrapper en primer lugar? ¿Por qué no simplemente ir con tipos primitivos donde los tenemos?


Java es un lenguaje orientado a objetos y, como se dijo, todo en java es un objeto. Pero ¿qué pasa con los primitivos? Son una especie de dejados fuera en el mundo de los objetos, es decir, no pueden participar en las actividades del objeto, como ser devueltos desde un método como un objeto, y ser agregados a una Colección de objetos, etc. Como solución a este problema, Java le permite incluir los primitivos en la familia de objetos mediante el uso de lo que se denomina clases de contenedor.


Clase de envoltura:

  1. Java utiliza tipos primitivos, como int, char, double para contener los tipos de datos básicos admitidos por el lenguaje.

  2. A veces es necesario crear una representación de objeto de estos tipos primitivos.

  3. Estas son clases de colección que tratan solo con tales objetos. Uno tiene que envolver el tipo primitivo en una clase.

  4. Para satisfacer esta necesidad, java proporciona clases que corresponden a cada uno de los tipos primitivos. Básicamente, estas clases encapsulan, o envuelven, los tipos primitivos dentro de una clase.

  5. Por lo tanto, se les conoce comúnmente como envoltura tipo. Los envoltorios de tipo son clases que encapsulan un tipo primitivo dentro de un objeto.

  6. Los tipos de envoltorio son Byte, Short, Integer, Long, Character, Boolean, Double, Float.


Hay tres razones por las que puedes usar un objeto Number en lugar de un primitivo:

  1. Como un argumento de un método que espera un objeto (a menudo se usa cuando se manipulan colecciones de números).
  2. Para usar las constantes definidas por la clase, como MIN_VALUE y MAX_VALUE, que proporcionan los límites superior e inferior del tipo de datos.
  3. Para usar métodos de clase para convertir valores en y desde otros tipos primitivos, para convertir hacia y desde cadenas y para la conversión entre sistemas de números (decimal, octal, hexadecimal, binario).

Fuente de:

Las clases de numeros


Java es un lenguaje de programación orientado a objetos. Creo que también podría preguntar: ¿por qué tenemos primitivos y por qué no todo es solo un objeto?

Los diseñadores de Java mantuvieron los dos separados para mantener las cosas simples. Utiliza los envoltorios cuando necesitas tipos que encajan en el mundo orientado a objetos, como el polimorfismo, las colecciones, etc. Usas los primitivos cuando necesitas eficiencia.


Las clases de contenedor se utilizan en lugar de los tipos primitivos cuando se espera un objeto.

En Colecciones, por ejemplo, un ArrayList puede contener instancias de cualquier subclase de Objeto, pero como los tipos primitivos no son Objetos, no pueden estar contenidos en el ArrayList.


Las clases de envoltura se utilizan para convertir cualquier tipo primitivo en un objeto. Los tipos de datos primitivos no son objetos, no pertenecen a ninguna clase, están definidos en el propio idioma. Mientras se almacena en estructuras de datos que solo admiten objetos, es necesario convertir el tipo primitivo en objeto primero, así que vamos a la clase envoltura.


Una razón pragmática de la parte superior de mi cabeza es que los objetos pueden ser nulos, las primitivas no pueden *. Si no puedo asegurar que una función pueda devolver un int, usar la envoltura es la única forma de tratar de obtener el int que espero. Autoboxing se encarga del resto.


Varias razones posibles:

  • Para que un valor nulo sea posible.
  • Para incluir en una colección
  • Para tratar genéricamente / polimórficamente como un objeto junto con otros objetos

Un ejemplo de cuándo se usan envoltorios sería en Colecciones, puede tener un ArrayList<Integer> , pero no un ArrayList<int> con HashMap s, etc.