Conversión de tipos 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.