Sobes.tech
Junior

Kas yra tipų konvertavimas (casting) Java kalboje?

sobes.tech AI

Atsakymas iš AI

Tipų konvertavimas (casting) Java yra vieno duomenų tipo reikšmės konvertavimas į kitą duomenų tipą.

Konvertavimo tipai:

  • Aiškus (Explicit Casting): Atliktas programuotojo naudojant (tipas) operatorių. Naudojamas konvertuojant iš "didesnio" tipo į "mažesnį" (pavyzdžiui, double į int). Gali sukelti duomenų praradimą.
    // automatinis konvertavimas
    int a = 10;
    double b = a; // int į double
    
    // aiškus konvertavimas
    double c = 10.5;
    int d = (int) c; // double į int, d bus lygus 10
    
  • Nepastebimas (Implicit Casting / Widening Conversion): JVM automatiškai atlieka, kai vyksta konvertavimas iš "mažesnio" tipo į "didesnį" (pavyzdžiui, int į double). Saugu, nekelia duomenų praradimo.
    int x = 10;
    double y = x; // int automatiškai konvertuojamas į double
    

Tipų konvertavimas gali būti tarp primityvių tipų arba tarp objektinių tipų hierarchijoje.

Kalbant apie objektinius tipus:

  • Upcasting: Subklasės konvertavimas į jos superklasę. Yra nepastebimas ir saugus.
    class Animal {}
    class Dog extends Animal {}
    
    Animal animal = new Dog(); // Upcasting
    
  • Downcasting: Superklasės konvertavimas į jos subklasę. Reikalauja aiškaus konvertavimo ir gali sukelti ClassCastException vykdymo metu, jei objektas iš tikrųjų nėra tikslios subklasės egzempliorius.
    Animal animal = new Dog(); // Upcasting
    
    // Downcasting - reikalauja aiškaus konvertavimo ir `instanceof` patikrinimo
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
        // Dabar galima naudoti Dog specifinius metodus
    }