¿Qué es Autoboxing y Unboxing en Java?

Feb 19 2023
Autoboxing: Autoboxing es una característica de Java que convierte automáticamente el tipo de datos primitivo en el objeto de clase contenedora correspondiente. Por ejemplo, convertir un int en un número entero, un doble en un doble, etc.

Autoboxeo :

Autoboxing es una característica de Java que convierte automáticamente el tipo de datos primitivo en el objeto de clase contenedora correspondiente. Por ejemplo, convertir un int en un número entero, un doble en un doble, etc.

El ejemplo más simple de autoboxing es:

Carácter ch = 'c'

donde la 'c' es un tipo primitivo (char) que se convierte automáticamente a la clase contenedora correspondiente (Character).

¿Dónde podría ser útil esto durante las prácticas de codificación?

El autoboxing es útil con la lista (como ArrayList, LinkedList, etc.). Tomemos el ejemplo de ArrayList.

Como sabemos, ArrayList solo contiene un objeto, no un tipo de datos primitivo, lo que significa que podemos almacenar el objeto de la clase contenedora, pero no podemos almacenar el tipo de datos primitivo dentro de un ArrayList. Por ejemplo ArrayList<Integer> arr = new ArrayList<Integer>() ; esto es valido Pero ArrayList<int> arr = new ArrayList<int>() ; esto no es válido.

Consideremos el fragmento de código escrito a continuación.

Explicando el Autoboxing (fig 1. a)

Aunque agregamos valores int como un tipo primitivo, en lugar de objetos Integer, el código se compila correctamente y no produce un error de tiempo de compilación. Porque el compilador JVM convierte el código anterior en el siguiente código:

Cómo el compilador convierte el código de la figura 1. a durante la compilación (figura 1. b)

Aquí, la conversión del tipo primitivo int a la clase contenedora Integer durante la operación de adición se denomina Autoboxing.

Desembalaje:

Unboxing es una característica de Java que convierte automáticamente el objeto de la clase contenedora en el tipo de datos primitivo correspondiente. Por ejemplo, convertir un entero en un int, un doble en un doble, etc.

Unboxing es el proceso inverso de Autoboxing.

¿Dónde podría ser útil esto durante las prácticas de codificación?

El desempaquetado ayuda a los programadores, ya que facilitará la realización de algunas operaciones, como operaciones aritméticas en la estructura de datos que almacenan el objeto de clase contenedora, como List. Para un ejemplo :

Explicando el Unboxing (fig 2. a)

Aunque los valores almacenados dentro de una lista (arr) son del tipo Integer, mientras agregamos esos valores a la variable de tipo int total, los valores Integer se convierten automáticamente a int. Lo que facilitará que un programador realice operaciones aritméticas.

El código se compila con éxito y no produce un error de tiempo de compilación. Porque el compilador JVM convierte el código anterior en el siguiente código:

Cómo el compilador convierte el código de la figura 2. a durante la compilación (figura 2. b)

Aquí, la conversión de int (tipo primitivo) a Integer (objeto de clase Wrapper) se llama Unboxing.

La siguiente tabla es útil ya que muestra el tipo de datos primitivo con su correspondiente clase contenedora.

tabla de asociación entre tipo primitivo y clase contenedora