Necesidad de clases contenedoras en Java

En primer lugar, la pregunta que surge entre los programadores es cuando tenemos tipos de datos primitivos, entonces, ¿por qué surge la necesidad del concepto de clases contenedoras en Java? Se debe a las características adicionales que existen en la clase Wrapper sobre los tipos de datos primitivos cuando se trata de uso. Estos métodos incluyen principalmente métodos como valueOf() , parseInt() , toString() y muchos más.

Una clase contenedora envuelve (encierra) un tipo de datos y le da una apariencia de objeto. Las clases contenedoras son finales e inmutables. Hay dos conceptos en las clases de contenedor, a saber, autoboxing y unboxing. 

Autoboxing es un procedimiento de conversión de un valor primitivo en un objeto de la clase contenedora correspondiente . Por ejemplo, convertir int a la clase Integer. El compilador de Java aplica autoboxing cuando un valor primitivo es:

  • Pasado como parámetro a un método que espera un objeto de la clase contenedora correspondiente.
  • Asignado a una variable de la clase contenedora correspondiente .

Unboxing es un procedimiento de conversión de un objeto de tipo contenedor a su valor primitivo correspondiente. Por ejemplo, conversión de Integer a int. El compilador de Java se aplica a unbox cuando un objeto de una clase contenedora es:

  • Pasado como parámetro a un método que espera un valor del tipo primitivo correspondiente.
  • Asignado a una variable del tipo primitivo correspondiente .

El autoboxing y el unboxing se muestran gráficamente a continuación:

Ahora pasemos a discutir las características útiles de las clases contenedoras, se enumeran a continuación: 

  1. Convierten tipos de datos primitivos en objetos. Los objetos son necesarios si deseamos modificar los argumentos pasados ​​a un método (porque los tipos primitivos se pasan por valor).
  2. Las clases en el paquete java.util manejan solo objetos y, por lo tanto, las clases contenedoras también ayudan en este caso.
  3. Las estructuras de datos en el marco de la colección, como ArrayList y Vector, almacenan solo objetos (tipos de referencia) y no tipos primitivos.
  4. Se necesita un objeto para admitir la sincronización en subprocesos múltiples.

Una de las principales características importantes proporcionadas por las clases contenedoras es una gran cantidad de métodos de utilidad. Digamos que cuando tenemos un valor flotante y queremos encontrar el valor entero de ese flotante, entonces tenemos un método específico para eso que se muestra en la ilustración que se muestra a continuación.

Ilustración:

Si queremos crear un valor entero a partir de una string o un valor booleano a partir de una string. Podemos hacerlo con la ayuda de clases contenedoras.

Sintaxis: creación a partir de otros tipos de datos

Integer hundred = Integer.valueOf("100");
Boolean value = Boolean.valueOf("True");

Ejemplo:

Java

// Java Program to Show Wrapper class concept
 
// Importing input output classes
import java.io.*;
 
// Main Class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // In java, in case of floating values
        // they are stored as x = (y)f
 
        // Conversion of float value to int
        Float floatWrap = Float.valueOf(45.158f);
 
        // Invoking the intValue() method over the stored
        // float value to store
        int floatToInt = floatWrap.intValue();
 
        // Print the non-primitive(Integer) value
        System.out.println(floatToInt);
 
        // Now for another number N
        // Say N = 5
 
        // Convert the binary number to the integer value
        Integer five = Integer.valueOf("101", 2);
 
        // Print the number
        System.out.println(five);
    }
}
Producción

45
5

Publicación traducida automáticamente

Artículo escrito por ankitsinghrajput y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *