RSS

Asignaciones – Clases Envoltorio y Boxing

11 Oct

En Java los datos numéricos, de caracteres, lógicos se tratan de forma primitiva por eficiencia.
Normalmente usamos tipos primitivos y no objetos.

Sin embargo, existe una manera de que estos datos puedan ser objetos, usando las llamadas clases envoltorio. Cada tipo primitivo en Java tiene su correspondiente clase envoltorio.

Son las siguientes:

Tipo primitivo Clase envoltorio
boolean Boolean
byte Byte
char Character
short Short
int Integer
long Long
float Float
double Double

Los objetos se construyen pasando el valor al constructor correspondiente.

int entero = 500;
Integer Entero = new Integer(entero); //de primitivo a objeto se llama boxing.
int aEntero = Entero.intValue();            //de objeto a primitivo se llama unboxing.

Muchas veces es útil convertir a estas clases ya que tienen muchos métodos interesantes.

String str = “1000”;
int x = Integer.parseInt(str);

En este último ejemplo hemos podido convertir de String a int utilizando su clase envoltorio Integer y el
método parseInt.

Constructores:

Cada clase envoltorio (menos Character) tienen dos constructores: uno que admite el tipo primitivo como parámetro y otro que admite un String.

Integer a = new Integer(500);
Integer b = new Integer(“500”);

Float c = new Float(7.5f);
Float d = new Float(“7.5f”);

Character e = new Character(‘t’);

Para el constructor Boolean cuando el String es true (sin importar mayúsculas o minúsculas) será true, cualquier otro valor será falso.

Boolean f = new Boolean(false);
Boolean g = new Boolean(“TrUe”); //g será true.

Boolean h = new Boolean (“NO”); //h será false.

ValueOf:

Otra forma de construir un objeto de una clase envoltorio es mediante este método estático, valueOf. Este método puede aceptar un String, o un String y un parámetro que indique la base numérica.

Integer nuevo = new Integer.valueOf(“150”);
Integer binario = new Integer.valueOf(“1010”, 2);

Métodos Útiles:

  • Convierte un Envoltorio en primitivo:
    byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue()
  • Convertir un String en primitivo:
    parseByte(), parseShort(), parseInt(), parseLong(), parseFloat(), parseDouble()
  • Dar una representación en String: toString()
  • Convertir números a otras bases. Con objetos Integer y Long se pueden utilizar: toBinaryString(), toOctalString(), toHexString():

Autoboxing y unboxing:

Para pasar de un tipo primitivo a su objeto equivalente se necesita utilizar las clases envoltorio (boxing).
Para obtener de la referencia del objeto su tipo primitivo (unboxing) se necesitan usar los métodos de las clases envoltorio.

Todas estas operaciones complicaban excesivamente el código. Por ello a partir de J2SE 5.0 se introdujo una conversión automática (autoboxing) que permite asignar y obtener los tipos primitivos sin necesidad de utilizar las clases envoltorio.

Por ejemplo:

int enteroPrimitivo = 420;
Integer Entero = enteroPrimitivo;  //Se permite la asignación directa. Se llama autoboxing.
int otroEnteroPrimitivo = Entero;  //Se asigna directamente. Se llama autounboxing.

De modo que ahora el compilador según el caso se encarga de crear el objeto envoltorio o de extraer el tipo primitivo.

También se permite en el paso de parámetros y en expresiones aritméticas.

Anuncios
 
1 comentario

Publicado por en 11 octubre, 2011 en Estudio, Tema 3

 

Etiquetas: , , , , , , , , ,

Una respuesta a “Asignaciones – Clases Envoltorio y Boxing

  1. Nendrel

    5 septiembre, 2013 at 6:46 pm

    Buenas,

    Un apunte. Donde pones:
    Integer nuevo = new Integer.valueOf(“150”);
    Integer binario = new Integer.valueOf(“1010”, 2);
    La palabra reservada “new” sobra ya que estás invocando un método estático y no un constructor. Si la pones da error de compilación.

    Gracias por tu blog, lo estoy usando para estudiar y me viene genial.

    Saludos!

     

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: