Casting de variables en Java
Este tutorial presenta cómo convertir variables o convertir una variable a otro tipo en Java.
La conversión se utiliza para convertir/convertir un valor/variable en otro tipo en un lenguaje de programación. Java admite un amplio conjunto de tipos de datos como int
, float
, double
, boolean
, etc., y durante la escritura del código, puede ser necesario convertir variables.
Java admite dos tipos de conversión, implícita y explícita. Si transformamos int
en long
o double
, entonces Java hace esto implícitamente porque long
y double
usan más bytes que int
, y hacemos lo contrario (es decir, convertimos double
en int
), entonces puede conducir a la pérdida de datos debido a la capacidad de enteros.
Por lo tanto, Java permite la conversión implícita entre tipos de datos inferiores a superiores, pero la conversión explícita para tipos superiores a inferiores. Entendamos con algunos ejemplos.
Conversión implícita en Java
Aquí, en este ejemplo, convertimos int
al tipo float
, conversión implícita. Dado que Java permite la conversión implícita sin mucho código, este código funciona bien.
public class SimpleTesting {
public static void main(String[] args) {
int a = 23;
System.out.println("int " + a);
// int to float - implicit casting
float f = a;
System.out.println("float " + f);
}
}
Producción :
int 23
float 23.0
Casting explícito en Java
En algunos casos, Java requiere una conversión explícita debido a la pérdida de datos.
Por ejemplo, si convertimos un float
a int
, entonces el valor después del punto decimal se trunca; es por eso que Java no hace esto implícitamente y arroja un error en tiempo de compilación. Vea el ejemplo a continuación.
public class SimpleTesting {
public static void main(String[] args) {
float a = 23;
System.out.println("float " + a);
// float to int - explicit casting
int f = a;
System.out.println("int " + f);
}
}
Producción :
Type mismatch: cannot convert from float to int
Este error en tiempo de compilación es una advertencia para el programador para evitar esta pérdida de datos. Si el programador todavía quiere convertir, Java permite un operador de conversión que encierra el nombre del tipo entre paréntesis de función.
Este compilador compila y ejecuta el código pero ve que el valor está truncado. Vea el ejemplo a continuación.
public class SimpleTesting {
public static void main(String[] args) {
float a = 23.5f;
System.out.println("float " + a);
// float to int - explicit casting
int f = (int) a;
System.out.println("int " + f);
}
}
Producción :
float 23.50
int 23
También podemos usar el método cast()
para convertir el valor del objeto en un valor primitivo. Vea el ejemplo a continuación.
public class SimpleTesting {
public static void main(String[] args) {
Integer a = 23;
System.out.println("integer " + a);
// float to int - explicit casting
int i = (Integer.class.cast(a));
System.out.println("int " + i);
}
}
Producción :
integer 23
int 23
Evite CastException
en Java
La conversión de objetos Java también es una preocupación importante que requiere un tipo de clase adecuado antes de la conversión. Por ejemplo, si lanzamos un tipo flotante
con double
, Java no lo permite y lanza ClassCastException
a la consola.
Vea el ejemplo a continuación.
public class SimpleTesting {
public static void main(String[] args) {
Number num = new Float(15.5);
System.out.println(num);
Double d = (Double) num;
System.out.println(d);
}
}
Producción :
15.5
Exception in thread "main" java.lang.ClassCastException