Sobes.tech
Junior

O que é o casting em Java?

sobes.tech IA

Resposta da IA

A conversão de tipos (casting) em Java é a transformação do valor de um tipo de dado para outro.

Tipos de conversão:

  • Casting explícito (Explicit Casting): Realizado pelo programador usando o operador (tipo). Usado para converter de um tipo "maior" para um "menor" (por exemplo, de double para int). Pode causar perda de dados.
    // conversão implícita (automática)
    int a = 10;
    double b = a; // int para double
    
    // conversão explícita (declarada)
    double c = 10.5;
    int d = (int) c; // double para int, d será igual a 10
    
  • Conversão implícita (Implicit Casting / Widening Conversion): Realizada automaticamente pela JVM ao converter de um tipo "menor" para um "maior" (por exemplo, de int para double). É segura e não causa perda de dados.
    int x = 10;
    double y = x; // int convertido automaticamente para double
    

A conversão de tipos pode ocorrer entre tipos primitivos ou entre tipos de objetos em uma hierarquia de herança.

Para a conversão de tipos de objetos:

  • Upcasting: Converter uma subclasse para sua superclasse. É implícito e seguro.
    class Animal {}
    class Dog extends Animal {}
    
    Animal animal = new Dog(); // Upcasting
    
  • Downcasting: Converter uma superclasse para sua subclasse. Requer uma conversão explícita e pode lançar ClassCastException em tempo de execução se o objeto na realidade não for uma instância da subclasse alvo.
    Animal animal = new Dog(); // Upcasting
    
    // Downcasting - requer conversão explícita e verificação com instanceof
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
        // Agora pode usar métodos específicos de Dog
    }