Sobes.tech
Junior

Mis on tüübi konverteerimine (casting) Java-s?

sobes.tech AI

Vastus AI-lt

Tipi konvertācija (casting) Java ir viena tipa vērtības pārvēršana citā tipā.

Veidi:

  • ** Skaidra (Explicit Casting):** Veic programmētājs, izmantojot (tips) operatoru. To izmanto, pārvēršot no "lielāka" tipa uz "mazāku" (piemēram, double uz int). Tas var novest pie datu zuduma.
    // automātiska pārvērtība
    int a = 10;
    double b = a; // int uz double
    
    // skaidra pārvērtība
    double c = 10.5;
    int d = (int) c; // double uz int, d būs 10
    
  • ** Netieša (Implicit Casting / Widening Conversion):** JVM to automātiski veic, kad notiek pārvēršana no "mazāka" tipa uz "lielāku" (piemēram, int uz double). Droši, nerada datu zudumu.
    int x = 10;
    double y = x; // int automātiski pārvēršas uz double
    

Tipu pārvēršana var notikt starp primitiiviem tipiem vai starp objektu tipiem hierarhijā.

Runājot par objektu tipiem:

  • Upcasting: Subklasē pārvēršana uz tās superklasi. Ir nepastebama un droša.
    class Animal {}
    class Dog extends Animal {}
    
    Animal animal = new Dog(); // Upcasting
    
  • Downcasting: Superklases pārvēršana uz tās subklasi. Prasa skaidru pārvēršanu un var izraisīt ClassCastException izpildes laikā, ja objekts patiesībā nav šīs subklases instances.
    Animal animal = new Dog(); // Upcasting
    
    // Downcasting - prasa skaidru pārvēršanu un `instanceof` pārbaudi
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
        // Tagad var izmantot Dog specifiskās metodes
    }