Operatorul cast

In aceasta lectie vom vorbi despre operatorul cast si efectul sau asupra expresiilor numerice. Scopul acestui operator este de a converti tipul de data al unei expresii la un alt tip de data mai restrictiv. Prin tip mai restrictiv intelegem un tip care nu acopera toate valorile tipului initial.

De exemplu sa presupunem ca avem o variabila double nr = 7.28. Daca din logica programului avem nevoie sa folosim doar valoarea intreaga a acestui numar atunci trebuie sa avem un mecanism prin care sa obtinem acest lucru. Mecanismul respectiv este operatorul cast. El se reprezinta punand in paranteze rotunde tipul de date la care vrem sa convertim expresia dorita. In acest caz am putea sa definim o noua variabila int nrIntrg = (int) nr;. Acest cod ii transmite compilatorului mesajul ca "eu ca programator stiu ca nr este de tipul double dar vreau sa mi-l convertesti intr-un int si imi asum prin operatorul cast posibilele pierderi de precizie care pot aparea".

Conversia in sens invers nu e necesara respectiv un tip mai restrictiv poate fi convertit direct la un tip mai larg, de exemplu o variabila byte b = 17; poate fi assignata fara cast la un int nr = b; de exemplu.

Cel mai restrictiv tip (cu cele mai putine valori) este byte. Urmeaza in ordine toate tipurile intregi si apoi cele reale in ordinea dimensiunii (short, int, long, float, double).

Programul de mai jos prezinta cateva conversii cu ajutorul operatorului cast sau situatii cand acesta nu este necesar, plus un exemplu cand conversia poate face ca valoarea initiala sa se piarda


La secventa de cod:

int value2 = 128;
System.out.println((byte) value2);
se incearca conversia numarului 128 pastrat ca int pe 32 de biti intr-un numar pe doar 8 biti. Doar ca tipul byte poate pastra doar valori intre -128 si +127, iar cum numarul 128 este in afara intervalului numarul rezultat nu va mai fi cel corect. In acest caz singura solutie viabila este sa ne asiguram din logica programului ca numarul pe care vrem sa-l convertim se incadreaza in intervalul suportat de tipul la care se face cast.

Este momentul sa arati ce ai invatat. Rezolva testul TR5 pentru a-ti verifica cunostintele dobandite pana acum.