Casting de variables en Java

Mohammad Irfan 12 octubre 2023
  1. Conversión implícita en Java
  2. Casting explícito en Java
  3. Evite CastException en Java
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

Artículo relacionado - Java Casting