Introducere în conversia de tip în Java

Odată ce variabilele, precum și, constantele de diferite tipuri vor fi puse în cadrul unei expresii, ele pot fi schimbate într-un tip similar. Această tehnică de transformare a unui singur tip predefinit într-un altul este cunoscută ca conversie de tip în Java.

Tip conversie

Există 2 tipuri diferite de conversie pe care le utilizăm în limbajele de programare.

1. Conversie tip implicită

Dacă conversia de tip se realizează instantaneu prin compilator, fără a fi implicată programatorul, conversia de tip este cunoscută sub numele de conversie implicită de tip. Compilatorul încurajează în mod fundamental fiecare operand către tipul de date al celui mai mare operand. Nici o pierdere de date nu are loc pe parcursul conversiei datelor. Conversia unui număr mult mai mic poate fi o conversie implicită. Transformarea datelor de tip întreg în plutitor.

float i=0;
int j=10;
i=j;

// Aceasta poate fi o transformare implicită, deoarece float poate fi mai mare decât un număr întreg, prin urmare, nu lipsește date Și, de asemenea, nici o excepție.

2. Conversia tipului explicit

Conversia de tip care poate fi aplicată prin programator este cunoscută sub numele de conversie explicită de tip. fundamental, programatorul face o expresie pentru a deveni de un anumit tip. Transformarea tipului explicit poate fi cunoscută sub numele de tipcasting. Pierderea datelor ar putea sau nu să apară în timpul conversiei datelor. Prin urmare, există o probabilitate de pierdere a detaliilor. s-ar putea să arunce o eroare dacă ar fi încercat să efectueze fără tipografie. Transformarea unui număr mai mare în numere mai mici poate fi conversie explicită.

float k=123.456
int i= (int) k

// aceasta poate fi conversia explicită, precum și, (int) este tipcast, operator. În acest moment, am reuși să evităm o excepție, dar puteți găsi pierderea vizibilă a datelor. adică i = 123

// .456 poate fi abandonat în procesul de conversie

Tastați conversia în Java

Ca și alte limbaje de programare, există 2 tipuri de conversie în Java:

Conversie tip implicit

  • Acestea sunt, în general, ceea ce numim conversie extindere și acestea pot fi făcute automat, deoarece trecem la un tip de date mai larg. Deci, dacă avem un număr întreg pe 32 de biți și vrem să trecem la un număr întreg pe 64 de biți, este mai larg. Deci, valoarea poate fi mutată în siguranță, astfel încât acestea pot fi făcute implicit. Iar compilatorul trebuie să ia o decizie despre cum să facă aceste conversii, iar regulile sunt destul de simple.
  • Dacă avem o expresie cu mai multe dimensiuni întregi (mixte) în ea, dacă avem dimensiuni scurte și lungi, oricare ar fi cea mai mare dimensiune întreagă la care se vor transforma lucrurile. Așadar, dacă facem o operațiune cu o scurtă și una lungă, scurtul va fi implicit interzis.
  • Dacă vom efectua o operație cu dimensiuni în virgule flotant mixte, deci avem o plutire și o dublă, acestea vor merge întotdeauna la dublu, deoarece dublu este cea mai mare dimensiune în virgulă flotantă.
  • Și atunci dacă avem o operație care folosește tipuri întregi mixte și tipuri cu virgule flotante, compilatorul va arunca la orice punct flotant cel mai mare din ecuație. Deci, dacă facem o operațiune cu un lung și la linia lungă, acesta va fi aruncat la linia de plutire.
  • Dacă facem o operațiune cu un lung și un dublu, lungul va fi apoi aruncat la o dublă.

Conversia tipului explicit

  • Efectuăm în mod explicit codul nostru atunci când folosim această operație de distribuție. Când facem asta, ne asumăm responsabilitatea pentru orice se întâmplă ca urmare a acestui tip de conversie. Din această cauză, putem efectua atât conversia de lărgire, cât și restrângerea. Așadar, lărgirea mergând de la un 32 de biți să zicem pe 64 de biți, restrângându-se, mergând de la 64 de biți în jos la 32 de biți. Ar trebui doar să vrem să fim conștienți că știm ce s-ar putea întâmpla.
  • Dacă facem o distribuție explicită de la un punct flotant la un număr întreg, astfel încât punctele flotante pot avea o porțiune fracțională, întregul nu poate, astfel încât orice porțiune fracțională ar fi abandonată atunci când aruncăm cea plutită în jos la un număr întreg.
  • Vrei să fii atent când efectuezi o conversie de restrângere. Dacă avem un număr întreg pe 64 de biți, acesta are capacitatea de a reține valori prea mari pentru a se încadra într-un număr întreg de 32 de biți.
  • Așadar, dacă am arunca acel bit pe 64 de biți pe 32 de biți, programul îl va efectua, dar dacă valoarea este prea mare pentru a se încadra într-un 32 de biți, veți obține rezultate ciudate din asta. Așadar, doriți să vă asigurați că atunci când o faceți, faceți o distribuție de îngustare, pentru că știți că ceea ce faceți este în siguranță.
  • Și ultimul este doar că doriți să fiți atenți atunci când convertiți dintr-un număr întreg într-un punct flotant, deoarece dacă aveți un număr întreg cu un număr mare de cifre semnificative, din cauza modului de stocare a punctului flotant, puteți pierde o parte din acele cifre semnificative.

Exemple de conversie de tip

Exemple de conversie de tip menționate mai jos în detaliu:

Cod:

Avem un program simplu aici, unele declarații în partea de sus, float, double, byte, short și long, iar variabilele sunt numite fiecare pentru a ajuta la identificarea tipurilor lor ca float este floatVal,

Cod:

lung este lungVal

Cod:

Și programul imprimă doar un mesaj de succes dacă se rulează.

Deci, hai să vedem cum intră în joc o parte din conversia de tip aici. Așa că, în primul rând, hai să mergem înainte și să creăm o variabilă. Avem scurt și vom numi doar rezultatul.

De fapt, să mergem mai departe și să-l numim rezultat1. Și haideți să facem doar o sarcină simplă. Și deci mai întâi vom atribui doar byteVal-ului. Acum, așa cum ne așteptăm, dacă mergem înainte și rulăm acest lucru, deci rulează cu succes.

Cod:

ieşire:

Știm că aceasta este o atribuire validă, deoarece un octet poate fi atribuit într-un scurt, deoarece aceasta este o conversie care se extinde.

Dacă luăm acest byteVal totuși și îl facem longVal în schimb, așa că acum este de fapt lung, dacă rulăm acest lucru, primim aici un mesaj de eroare care spune tip incompatibil, posibilă pierdere de conversie de la lung la scurt.

Cod:

Deci, ceea ce putem face aici este că putem face o distribuție explicită. Doar vom pune scurt în fața acestui lucru. Așadar, acum este valabil, astfel încât să-l putem rula.

Cod:

Și, desigur, funcționează. Pentru că lungul nu a putut trece într-un scurt timp, deoarece aceasta a fost o reducere a convertirii.

ieşire:

Dar, punând distribuția explicită în fața ei, acum este valabil. Dacă vrem, putem pune o notare de distribuție să fie foarte explicită și să spunem că știți, știm că, deși o conversie de octeți este legală, vrem să arătăm explicit că o aruncăm introducând distribuția scurtă acolo, putem face și asta este complet legal.

Cod:

ieşire:

Așadar, acum să aruncăm o privire la un alt scenariu. Vom crea o altă variabilă pe care o vom numi rezultat2 , iar rezultat2 este și o scurtă. Și ceea ce vrem să facem aici este doar să ne luăm byteVal și vrem să scădem longVal. Acum știm că acest lucru nu este legal, deoarece rezultatul expresiei va fi dimensiunea celui mai mare număr întreg, care este lungimea.

Cod:

Deci, dacă executăm acest lucru, vom primi o eroare care spune că nu este valid să convertim o lungime într-un scurt.

Dar să spunem că vrem să mergem înainte și să păstrăm rezultatul pe scurt. Trebuie să facem o distribuție. Dar vrem să aruncăm această dată, valoarea întregului rezultat aici. Așadar, ceea ce vom face îl vom pune aici pe scurt.

Puneți distribuția scurtă în fața ei aici. Și înfășurați totul între paranteze. Și aleargă-l.

Cod:

Se va rula cu succes.

ieşire:

Acum declară o altă variabilă numită rezultat3, dar declară aceasta ca lungă. Deci, am obținut rezultatul 3, iar ceea ce vom face aici este să atribuim acelui longVal - floatVal. Așadar, rulăm asta, eroarea pierde conversia convertind de la float la lung, deoarece ori de câte ori avem un tip întreg și orice tip în virgulă flotantă, rezultatul va fi tipul în virgulă flotantă.

Cod:

Așa că haideți să mergem mai departe și să convertim rezultatul nostru acum într-un float. Așadar, făcând ca acesta să plutească, ar trebui să putem să mergem înainte și să-l rulăm. Și alergați cu succes.

Cod:

ieşire:

Dar acum dacă luăm floatVal aici și convertim acest lucru într-un doubleVal și dacă încercăm să rulăm acest lucru, primim eroarea pentru că spune că rezultatul va fi dublu, deoarece atunci când faceți un număr întreg și un punct flotant, este dimensiunea celui mai mare punct flotant din ecuație.

Cod:

Așa că haideți să mergem mai departe și să facem acest rezultat dublu, pentru ca acum să-l putem executa.

Cod:

ieşire:

Concluzie

1. Variabilele sunt puternic tastate în Java
2. Tipuri primitive

  • Tipuri întregi, tip flotant, tip char, tip boolean

3. Conversia de tip

  • De multe ori trebuie să ne deplasăm între diferite tipuri, deoarece programele noastre, pe măsură ce devin mai complexe, vor implica probabil mai multe tipuri de date.
  • Compilatorul poate gestiona conversiile de tip care se extind, trecând de la un tip la altul care poate păstra valori mai mari,
  • Dar, de asemenea, puteți utiliza castingul pentru a efectua explicit acele tipuri de conversii pe care compilatorul nu le poate efectua automat.

Articole recomandate

Acesta este un ghid pentru conversia de tip în Java. Aici discutăm introducerea, conversia de tip în Java, cum ar fi implicită și explicită, împreună cu exemplele care utilizează diferite situații. De asemenea, puteți consulta următoarele articole pentru a afla mai multe-

  1. Constructor în Java
  2. Sortare în Java
  3. Constructor în Java
  4. JCheckBox în Java
  5. Aruncă vs Aruncă | Top 5 diferențe pe care ar trebui să le știi
  6. Cum să implementați caseta de selectare în Bootstrap
  7. Conversie în Java cu exemple