„Și acum, pentru partea cea mai interesantă. Vă voi spune despre conversiile de tip. Variabilele nu își pot schimba tipurile, dar există un loc unde puteți converti tipurile. Acel loc este o operațiune de atribuire .

„Puteți atribui variabile de diferite tipuri unul altuia. În acest fel, valoarea unei variabile (de un anumit tip) este convertită într-o valoare de celălalt tip și atribuită celeilalte variabile.

„Putem evidenția două tipuri de conversii: lărgirea conversiilor primitive și îngustarea conversiilor primitive. Lărgirea este ca și cum ați muta lucrurile dintr-un coș mic într-unul mare. Procedura este neremarcabilă și nedureroasă. Îngustarea este analogă cu scoaterea lucrurilor dintr-un coș mare. și punându-le într-unul mai mic. Când faci asta, s-ar putea să nu ai suficient spațiu; s-ar putea să trebuiască să arunci ceva.

„Iată tipurile sortate în funcție de dimensiunea „coșului”:”

Conversie de tip

„Doar câteva comentarii:

1. Coșul lui char are aceeași dimensiune cu cel al lui scurt, dar nu puteți muta lucrurile liber de la unul la altul. Când mutați valori de la scurt la char , valorile care sunt mai mici decât 0 se vor pierde întotdeauna. Când mutați valori de la char la scurt, valorile mai mari de 32.000 se vor pierde.

2. Când transformați numere întregi în numere fracționale, cifrele cele mai puțin semnificative ale numărului pot fi aruncate. Cu toate acestea, acest lucru este acceptabil, deoarece scopul unui număr fracționar este de a stoca o valoare aproximativă."

Când efectuăm conversii de restrângere, trebuie să spunem în mod explicit compilatorului că nu am făcut o eroare: aruncăm o parte din număr intenționat. Folosim un operator cast ( adică numele tipului în paranteze ) pentru a face acest lucru.”

„Așa ar trebui să atribuiți variabile de diferite tipuri:”

Cod Java Descriere
byte a = 115;
int b = a;
Lărgirea conversiei primitive. Totul e grozav.
int c = 10000;
byte d = (byte) c;
Îngustarea conversiei primitive . Trebuie să menționăm în mod explicit că octeții suplimentari ar trebui eliminați.
int c = 10;
byte d = (byte) c;
Îngustarea conversiei primitive. Trebuie să menționăm în mod explicit că octeții suplimentari ar trebui eliminați, chiar dacă sunt egali cu 0.
float f = 10000;
long l = (long) (f * f);
float f2 = l;
long l2 = (long) f2;
Când se atribuie unui float, are loc o conversie primitivă în creștere. Când se atribuie un float unui lung, are loc o conversie primitivă de îngustare. Este necesar un operator de turnare.
double d = 1;
float f = (float) d;
long l = (long) f;
int i = (int) l;
short s = (short) i;
byte b = (byte) s;
Restrângerea conversiilor în toate operațiunile de atribuire, cu excepția primului rând. Aceste conversii necesită să indicăm în mod explicit conversia tipului.

Un operator de distribuție trebuie pus înaintea unui număr/variabilă oricând o parte a numărului va fi renunțată sau când are loc o conversie primitivă care se îngustează. Operatorul de distribuție afectează doar numărul/variabila care îl urmează direct.”

Cod Java Descriere
float f = 10000;
long l = (long) f * f;
Doar una dintre cele două variabile este transformată într-un lung: înmulțirea unui lung și a unui float este egal cu un float.
float f = 10000;
long l = (long) (f * f);
Întreaga expresie este extinsă.

"Înțeleg."