Conversión de tipos en Java

Author
Por Darío Rivera
Publicado el en Java

En java existe una cantidad considerable de tipos de conversiones que consideran cada uno de los posibles escenarios de conversión. En el presente post, veremos los que considero son los más relevantes y/o utilizados.

Conversión de Ampliación Primitiva

Este tipo de conversión hace referencia conversiones específicas realizadas hacia tipos numéricos. Recordemos que los tipos de datos numéricos tienen un tamaño y un rango específico. Te invitamos a darle una chequeada a nuestro post Tipos de datos en Java para que veas una tabla resumen con las características más importantes de cada tipo de dato. A continuación verás la tabla de conversión para cada tipo.

Tipo inicial Tipo final
byte short, int, long, float, double
short int, long, float, double
char int, long, float, double
int long, float, double
long float, double
float double

Este tipo de conversión no presenta pérdida de información en magnitud de un tipo a otro. A continuación se realiza la conversión de un entero a float.

class Test {
    public static void main(String[] args) {
        int big = 1234567890;
        float approx = big;
        System.out.println("Integer: " + big + "\n");
        System.out.println("Float: " + approx + "\n");
    }
}

Conversión de Estrechamiento Primitiva

Este tipo de conversión se presenta cuando se quiere convertir un tipo de dato con un rango mayor a uno menor. Es el caso opuesto de la conversión de ampliación primitiva. A continuación verás la tabla de conversión para cada tipo.

Tipo inicial Tipo final
short byte, char
char byte, short
int byte, short, char
long byte, short, char, int
float byte, short, char, int, long
double byte, short, char, int, long, float

Este tipo de conversión puede presentar pérdida de información en magnitud de un tipo a otro.

class Test {
    public static void main(String[] args) {
        float n = 100.04;
        int k = n;
        System.out.println("Float: " + n + "\n");
        System.out.println("Integer: " + k + "\n");
    }
}

Conversión de Envoltura o empaquetado

Este tipo de conversión transforma una expresión con un tipo de dato primitivo en una expresión con un tipo de dato de referencia. Para esto, Java está provisto de las Clases de Envoltura (Wrapper Classes). Todas las posibles conversiones de envoltura están listadas en la siguiente tabla.

Data type Wrapper class
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

Veamos un ejemplo en donde se convierte un tipo de dato int a su tipo de referencia Integer. Nota que ya que no podemos imprimir un objeto en si, utilizamos el método toString para imprimir el valor representado en string.

class Test {
    public static void main(String[] args) {
        int number = 1565783;
        Integer reference = Integer.valueOf(number);
        System.out.println("int: " + number + "\n");
        System.out.println("Integer: " + reference.toString() + "\n");
    }
}

Conversión de Desenvoltura o Desempaquetado

Este tipo de conversión transforma una expresión con un tipo de dato de referencia a una expresión con un tipo de dato primitivo. Es el caso opuesto de la conversión de empaquetado. Todas las posible conversiones de desenvoltura están listadas en la siguiente tabla.

Wrapper class Data type Method
Byte byte byteValue()
Short short shortValue()
Integer int intValue()
Long long longValue()
Float float floatValue()
Double double doubleValue()
Boolean boolean booleanValue()
Character char charValue()

Veamos un ejemplo en donde se convierte un tipo de dato de referencia Integer al tipo int.

class Test {
    public static void main(String[] args) {
        Integer reference = new Integer(763569765);
        System.out.println("Integer: " + reference.toString() + "\n");
        System.out.println("int: " + reference.intValue() + "\n");
    }
}

Nótese que para convertir el Integer a su tipo nativo se debe utilizar el método intValue.  El método toString en este caso se utiliza para imprimir también el valor pero como string, el cual es distinto en tipo al valor que queremos obtener. Cada tipo de referencia tiene un método específico para devolver el tipo nativo. Hemos colocado el método correspondiente a cada tipo en la tabla anterior.

Para otros tipos de conversiones puedes consultar la siguiente documentación

https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html

Espero puedas tener una idea un poco más clara de los tipos de conversiones en Java y cómo utilizarlos. Hasta la próxima.


Acerca de Darío Rivera

Author

Application Architect at Elentra Corp . Quality developer and passionate learner with 10+ years of experience in web technologies. Creator of EasyHttp , an standard way to consume HTTP Clients.

LinkedIn Twitter Instagram

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.