Conversión de tipos de datos en Java (Casting con ejemplos)

Basico

Aprende sobre la conversión de tipos de datos en Java con ejemplos. ¿Cómo se procede a convertir de un byte a un short, un int, un long, float o double?

Cuando asigna valor de un tipo de datos a otro, los dos tipos pueden no ser compatibles entre sí. Si los tipos de datos son compatibles, entonces Java realizará la conversión (automáticamente) que se conoce como Conversión automática de tipos y, en caso negativo, deberá hacer un casting o convertirlo explícitamente. Por ejemplo, asignando un valor int a una variable long.

1. Conversión automática de tipos o ampliación

La conversión de ampliación tiene lugar cuando dos tipos de datos se convierten automáticamente. Esto sucede cuando:

  • Los dos tipos de datos son compatibles.
  • Cuando asignamos el valor de un tipo de datos más pequeño a un tipo de datos más grande.
Conversión automática de tipos Java
Conversión automática de tipos Java

Por ejemplo, en Java, los tipos de datos numéricos son compatibles entre sí, pero no se admite la conversión automática de tipo numérico a char o boolean. Además, char y boolean no son compatibles entre sí.

Ejemplo:

class Test
{
    public static void main(String[] args)
    {
        int i = 100; 
         
        //conversion automatica de tipo
        long l = i; 
         
        //conversion automatica de tipo
        float f = l; 
        System.out.println("Valor Int "+i);
        System.out.println("Valor Long "+l);
        System.out.println("Valor Float "+f);
    }
}

Salida:

Valor Int 100
Valor Long 100
Valor Float 100.0

2. Conversión explícita de tipo o casting

Si queremos asignar un valor de tipo de dato más grande a un tipo de dato más pequeño, realizamos un casteo/casting o lo que se conoce como conversión de tipo explícito.

  • Esto es útil para tipos de datos incompatibles donde la conversión automática no se puede realizar.
  • charint no son compatibles entre sí. Veamos luego cuando tratamos de convertir uno en otro.
Conversión explícita o casting Java
Conversión explícita o casting en Java

Ejemplo:

// 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

¿Cómo hacer una conversión explícita?

Ejemplo:

// 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
Nota: Al asignarle valor al tipo de byte, la parte fraccionaria se pierde y se reduce al módulo 256 (rango de byte).

Ejemplo:

// 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

3. Tipo de promoción en Expresiones

public class PromocionAutomatica
{
    public static void main(String args[])
    {
      byte a = 40;
      byte b = 50;
      byte c = 100;
      int d = a * b / c;
    }
}

Del código anterior, notamos que el resultado de a* b excede el rango de byte. Para manejar este tipo de problema, Java automáticamente promueve cada operando byteshort a int. En este ejemplo, a* b se realiza usando enteros.

Al evaluar expresiones, el valor intermedio puede exceder el rango de operandos y, por lo tanto, se promoverá el valor de la expresión. Algunas condiciones para la promoción de tipo son:

  • Java automáticamente promueve cada operando byte, short, o char al evaluar una expresión.
  • Si un operando es long, float o double, la expresión se promueve a long, float o double, respectivamente.

Ejemplo:

// 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

4. Casting de Tipo explícito en Expresiones

Al evaluar expresiones, el resultado se actualiza automáticamente a un tipo de datos más grande del operando. Pero si almacenamos ese resultado en un tipo de datos más pequeño, genera un error de tiempo de compilación, por lo que debemos “castear” el resultado.

Ejemplo:

// 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
NOTA: En el caso de operandos individuales, el resultado se convierte en int y luego se realiza una conversión de tipos en consecuencia.
Conversión de tipos de datos en Java
  • 10/10
    Casting con Ejemplos - 10/10

Sobre el Autor:

Hey hola! Yo soy Alex Walton y tengo el placer de compartir conocimientos hacía ti sobre el tema de Programación en Java, desde cero, Online y Gratis.

0 comentarios

  1. […] Lo veremos más adelante, pero puede revisar: Conversión de tipos de datos en Java […]

Deja una Respuesta

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.