1. Tipos de datos incompatibles
  2. Conversión explícita o casting
    1. Casting de Tipo explícito en Expresiones en Java
Icono play
Java
Casting

Al desarrollar aplicaciones suele surgir la necesidad de realizar la conversión de tipos de datos como por ejemplo convertir un byte a un short, un int, un long, float o double. 

Cuando se asigna valor de un tipo de datos a otro, los dos tipos de datos pueden no ser compatibles entre sí y se debe hacer un casting. Por ejemplo, podemos asignar un valor int a una variable long.

Tipos de datos incompatibles

En el siguiente ejemplo se puede observar un programa donde se presenta un error debido a la existencia de una falta de compatibilidad de los tipos de datos:

// Programa Java para ilustrar tipos de datos incompatibles
// para la conversión de tipo explicita
public class Test
{
  public static void main(String[] argv)
  {
    char ch = 'c';
    int num = 88;
    ch = num;
  }
}

Salida:

9: error: incompatible types: possible lossy conversion from int to char
 ch = num;
 ^
1 error

Conversión explícita o casting

En los siguientes ejemplos se puede observar la sintaxis del código empleado para llevar a cabo el casting en diversos casos:

// Programa Java para ilustrar el tipo de conversion explicita
class Test
{
    public static void main(String[] args)
    {
        double d = 100.04; 
         
        //casting de tipo
        long l = (long)d;
         
        //casting de tipo
        int i = (int)l; 
        System.out.println("Valor Double "+d);
         
        //parte fraccionaria perdida
        System.out.println("Valor Long "+l); 
         
        //parte fraccionaria perdida
        System.out.println("Valor Int "+i);
      } 
}

Salida:

Valor Double 100.04
Valor Long 100
Valor Int 100
// Programa Java para ilustrar Conversion de int y double a byte
class Test
{
    public static void main(String args[]) 
    { 
        byte b; 
        int i = 257; 
        double d = 323.142;
        System.out.println("Conversion de int a byte."); 
         
        //i%256
        b = (byte) i; 
        System.out.println("i = " + i + " b = " + b);
        System.out.println("\nConversion de double a byte.");
         
        //d%256
        b = (byte) d; 
        System.out.println("d = " + d + " b= " + b);
    }
}

Salida:

Conversion de int a byte.
i = 257 b = 1
Conversion de double a byte.
d = 323.142 b= 67
// Programa Java para ilustrar la promocion de Tipo en Expresiones
class Test
{ 
    public static void main(String args[]) 
    { 
        byte b = 42; 
        char c = 'a'; 
        short s = 1024;
        int i = 50000;
        float f = 5.67f;
        double d = .1234;
         
        // La expresion
        double result = (f * b) + (i / c) - (d * s);
         
        //Resultado después de todas las 'promociones'
        System.out.println("resultado = " + result);
    } 
}

Salida:

resultado = 626.7784146484375

Casting de Tipo explícito en Expresiones en Java

Al examinar expresiones en Java, el resultado se actualiza en forma automática a un tipo de datos más grande del operando. 

Pero si decidimos almacenar ese resultado en un tipo de datos más pequeño, se generará un error de tiempo de compilación, por lo que resulta necesario hacer un casting del resultado, lo que se conoce como “castear” el resultado. 

A continuación se puede ver como hacer este procedimiento.

// Programa Java para ilustrar el tipo de conversion int a byte
class Test
{ 
    public static void main(String args[]) 
    { 
        byte b = 50; 
         
        //casting de tipo int a byte
        //mostraría error si no detallamos (byte)
        b = (byte)(b * 2); 
        System.out.println(b);
    }
}

Salida:

100
¿Todavía no te has apuntado a nuestro Bootcamp?
Tenemos muchos cursos para ofrecerte y ¡TOTALMENTE GRATIS! Estos son algunos de ellos: