¿Qué es Java casting y cómo usarlo?

| Última modificación: 23 de septiembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En el proceso de gestionar tipos de datos en Java o convertirlos en otros tipos, el Java casting es un concepto muy conocido. Si quieres saber de qué se trata, cómo funciona y cómo puedes sacarle el mayor provecho para evitar errores, sigue leyendo.

java casting
Imagen: Medium

¿Qué es Java casting?

En Java los tipos de datos están divididos en dos categorías principales: datos primitivos y datos referenciados (objetos): los datos primitivos abordan tipos como int, float, double, char, etc; los referenciados abarcan cualquier clase u objeto. El Java casting es, básicamente, un proceso que consiste en convertir un valor de un tipo de dato a otro.

Tipos de Java casting

Existen dos tipos de Java casting: el widening casting y el narrowing casting. Veamos en qué consiste cada uno.

Widening casting (conversión automática)

El widening casting es un proceso que se realiza de manera automática cuando convertimos un tipo de dato más pequeño en uno más grande. En este proceso tú no tienes que hacer nada en especial para que el programa funcione, ya que es Java el que se encarga de la conversión. Los tipos de datos pequeños, como int, se pueden convertir de manera automática a tipos más grandes, como el double.

Veamos un ejemplo:

public class Main {
public static void main(String[] args) {
int myInt = 9;
double myDouble = myInt; // Casting automático: int a double

System.out.println(myInt); // Imprime 9
System.out.println(myDouble); // Imprime 9.0
}
}

En este ejemplo, la conversión de int a double se realiza sin intervención manual, y el valor de 9 se convierte automáticamente a 9.0 en el tipo double.

Narrowing casting (conversión manual)

Contrario al anterior, el narrowing casting sucede cuando se tiene que convertir un tipo de dato más grande a uno más pequeño y tiene que hacerse de forma manual. Esto sucede porque, al convertir un tipo de dato más grande en uno más pequeño, se puede perder información importante.

Un ejemplo de narrowing casting podría ser:

public class Main {
public static void main(String[] args) {
double myDouble = 9.78;
int myInt = (int) myDouble; // Casting manual: double a int

System.out.println(myDouble); // Imprime 9.78
System.out.println(myInt); // Imprime 9
}
}

En este caso, hemos convertido manualmente un double a un int. Como puedes notar, el valor decimal 9.78 se ha truncado a 9, lo que demuestra la pérdida de información en un narrowing casting.

Ejemplo de Java casting: caso práctico

Para este ejemplo supongamos que tenemos una aplicación que calcula el porcentaje de un puntaje de usuario en relación con el puntaje máximo en un juego. Debemos usar casting java para asegurarnos de que el resultado sea preciso y no se pierda ningún dato:

int maxScore = 500;
int userScore = 423;

// Convertimos userScore a float para hacer una división precisa
float percentage = (float) userScore / maxScore * 100.0f;

System.out.println("El porcentaje del usuario es " + percentage);

En este caso, el Java casting garantiza que el cálculo de la división sea preciso al convertir userScore de un int a un float. Sin este casting, la división podría resultar en un número incorrecto.

Java casting en objetos

Al inicio del post dijimos que le java casting se podía ejecutar con datos primitivos y datos refenciados, como los objetos. Todas las clases en Java son subclases de Object, esta es la razón por la que a veces necesitarás hacer un java casting para poder convertir un objeto genérico en su tipo original. Veamos un ejemplo de cómo hacerlo:

Map<String, Object> dispositivos = new HashMap<>();
dispositivos.put("televisor", new Televisor());

Televisor tv = (Televisor) dispositivos.get("televisor");
tv.encender();

En este ejemplo, estamos almacenando un objeto Televisor dentro de un mapa como un Object. Para poder acceder a los métodos específicos del televisor, necesitamos hacer un casting para convertir el objeto genérico en un Televisor.

Si estás interesado en seguir aprendiendo sobre Java, te invitamos a unirte al bootcamp en java que Keepcoding tiene para ti. Aquí no solo aprenderás sobre este lenguaje, sino sobre todas aquellas herramientas que te puedan ayudar a pulir tus conocimientos en el mismo. ¡Transforma tu vida ahora mismo y no esperes más!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado