Cast

Cast-ul reprezintă transformarea unui tip de date în alt tip (în engleză type casting). Acesta este de 2 tipuri: implicit şi explicit. Vom discuta fiecare tip în parte, astfel încât sa înţelegi cum se aplică acest mecanism.

Cast-ul implicit

Acesta se produce automat când transformăm un tip de date specific, mai "mic", într-unul generic, mai "mare", care poate reţine mai multă informaţie.

Exemplu: int reţine doar numere întregi, iar double şi pe cele reale. Putem transforma o valoare int într-un double fără să pierdem informaţie. În acest caz se va produce un cast implicit.

int k = 7;
double d = k;
System.out.println(d); // va afisa 7.0

Cast-ul explicit

Cast-ul explicit este practic inversul celui implicit. Acesta se produce când putem avea pierderi de informaţii şi va trebui să îi specificăm programului că suntem de acord să pierdem această informaţie.

Exemplu: o variabilă de tip double poate avea zecimale. Dacă vrem sa o reţinem într-un int, informaţia legată de zecimale se va pierde, deci este necesar un cast explicit.

double h = 6.97;
int k = (int) h; // cast explicit, pierdem numerele de după virgulă
System.out.println(k); // va afişa valoarea 6

Până acum aţi învăţat câteva tipuri de date. Cast-ul nu se aplică între toate tipurile de date, cum ar fi cele prezentate mai sus şi boolean, String sau Scanner, de exemplu, deoarece reprezintă concepte diferite. O să învăţaţi mai târziu cum se aplică acesta pe celelalte tipuri.

Exerciţii

1. S-au comandat 100 de litri de suc de portocale în sticle de câte 1,2 litri. Câte sticle s-au adus?

Soluţie

Soluţie

class Sticle {

    public static void main (String[] args) {

      double litriSticla = 1.2; // pentru fiecare sticla
      int litriTotal = 100;
      
      // impartirea ne da un numar real, deci trebuie sa eliminam virgula pentru a retine in int
      int sticle = (int) (litriTotal / litriSticla);
      // au mai ramas cativa litri, deci ii punem intr-o sticla pe jumatate goala
      sticle++; // mai adaugam o sticla care nu e plina
      
      System.out.println("Sunt necesare " + sticle + " sticle");
      
    }
}


2. Sunt 20 pasageri într-o maşină. Există 50 de maşini care circulă dimineaţa din Pipera în Berceni. Dacă sunt în total 640 de oameni care vor să ajungă în fiecare dimineaţă din Pipera în Berceni, care este media locurilor libere care rămân în fiecare maşină?

Soluţie

Soluţie

class Pasageri {

    public static void main (String[] args) {

        int pasageri = 20;
        int masini = 50;
        int oameni = 640;
        
        // locurile disponibile
        int locuriTotale = pasageri * masini;
        // locurile ramase in functie de nevoie
        int locuriRamase = locuriTotale - oameni;
        
        // daca impartim 2 numere de tip int rezultatul este un int
        // daca impartim 1 double la 1 int, rezultatul este double
        // facem cast - adica transformam una dintre valori in double
        double mediaRamasa = (double) locuriRamase / masini;
        
        System.out.println("Raman in medie " + mediaRamasa + " locuri intr-o masina.");
      
    }
}


Resurse

You could leave a comment if you were logged in.