Saltar al contenido principal
Documentos
Java keywordsMatrices JavaProgramación orientada a objetos en JavaJava File HandlingIntroducción a JavaConceptos básicos del lenguaje Java

Fundición de tipos en Java

La conversión de tipos en Java es el proceso de convertir un tipo de datos en otro. Es esencial cuando quieres realizar operaciones entre distintos tipos de datos o cuando necesitas almacenar un valor de un tipo en una variable de otro tipo. Java admite dos tipos de fundición: fundición implícita (automática) y fundición explícita (manual).

Colado implícito (Conversión de ensanchamiento)

La fundición implícita se produce automáticamente cuando un tipo de datos menor se convierte en un tipo de datos mayor. Este tipo de fundición es segura y no provoca pérdida de datos.

Syntax

largerType variableName = smallerTypeValue;

Ejemplo

public class ImplicitCastingExample {
    public static void main(String[] args) {
        int intValue = 100;
        double doubleValue = intValue; // Implicit casting from int to double
        System.out.println("Double value: " + doubleValue);
    }
}

En este ejemplo, el valor int intValue se convierte implícitamente en un tipo double. La conversión es automática porque double es mayor que int.

Reparto Explícito (Conversión Estrecha)

Para convertir un tipo de datos mayor en un tipo de datos menor, es necesario realizar una fundición explícita. Este tipo de fundición puede provocar la pérdida de datos, por lo que debe hacerse manualmente.

Syntax

smallerType variableName = (smallerType) largerTypeValue;

Ejemplo

public class ExplicitCastingExample {
    public static void main(String[] args) {
        double doubleValue = 9.78;
        int intValue = (int) doubleValue; // Explicit casting from double to int
        System.out.println("Integer value: " + intValue);
    }
}

En este ejemplo, el valor double doubleValue se convierte explícitamente en un tipo int. La conversión provoca el truncamiento de la parte decimal.

Reparto entre referencias de objetos

En Java, también puedes hacer cast entre referencias a objetos. Se suele utilizar cuando se trata de herencia e interfaces.

Ejemplo

class Animal {
    void sound() {
        System.out.println("Animal sound");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("Dog barks");
    }
}

public class ReferenceCastingExample {
    public static void main(String[] args) {
        Animal animal = new Dog(); // Upcasting
        Dog dog = (Dog) animal;    // Downcasting
        dog.bark();
    }
}

Aquí, una referencia Animal se pasa a un objeto Dog. Más tarde, se vuelve a enviar explícitamente a Dog para acceder al método bark.

Consejos y buenas prácticas

  • Evita el Reparto Innecesario: Utiliza la fundición implícita siempre que sea posible para minimizar el riesgo de errores.
  • Comprueba la compatibilidad: Asegúrate de que los tipos son compatibles cuando realices la fundición explícita para evitar ClassCastException.
  • Utiliza el operador instanceof: Antes de hacer un downcasting, utiliza el operador instanceof para comprobar si el objeto es una instancia de la clase de destino.
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
    }
    
  • Sé consciente de la pérdida de datos: Cuando realices una fundición explícita, ten en cuenta la posible pérdida de datos, sobre todo con las conversiones de estrechamiento.
  • Comprender las jerarquías: Cuando trates con referencias a objetos, comprende la jerarquía de clases para realizar una fundición segura.

Aprende Java Essentials

Desarrolla tus conocimientos de Java desde la base y domina los conceptos de programación.
Empieza a aprender gratis