Úvod do konverzie typov v Jave

Akonáhle premenné, rovnako ako, konštanty rôznych typov budú zostavené do výrazu, môžu byť zmenené na podobný typ. Táto technika transformácie jedného preddefinovaného typu na iný sa v Jave nazýva konverzia typu.

Typ Konverzia

V programovacích jazykoch používame 2 rôzne typy konverzií.

1. Implicitná konverzia typu

Ak sa konverzia typu vykonáva okamžite pomocou kompilátora bez zapojenia programátora, konverzia typu sa nazýva implicitná konverzia typu. Kompilátor zásadne povzbudzuje každý operand k dátovému typu najväčšieho operandu. Počas konverzie údajov nedochádza k žiadnym stratám údajov. Neexistuje žiadna šanca vyvolať výnimku prostredníctvom konverzie, a preto je známy ako typovo bezpečný. Konverzia menšieho množstva môže byť implicitnou konverziou. Transformácia celočíselných údajov na float.

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

// Môže to byť implicitná transformácia, pretože plavák môže byť väčší ako celé číslo, preto nemôže chýbať ani žiadna výnimka.

2. Explicitná konverzia typu

Konverzia typu, ktorú je možné vynútiť prostredníctvom programátora, sa nazýva explicitná konverzia typu. programátor v zásade robí výraz, ktorý sa má stať konkrétnym typom. Explicitná transformácia typu môže byť známa ako typecasting. Počas konverzie údajov môže dôjsť k strate údajov. Preto existuje pravdepodobnosť straty podrobností. Mohlo by to spôsobiť chybu, ak by sa ju pravdepodobne pokúsili vykonať bez písania textu. Transformácia väčšieho počtu na menšie čísla môže byť výslovnou konverziou.

float k=123.456
int i= (int) k

// môže to byť Explicitná konverzia, ako aj (int) is typecast, operator. V tomto okamihu sa nám podarí uniknúť výnimke, ale vidíte stratu údajov. tj i = 123

// 0, 456 môžete v procese prevodu vynechať

Zadajte prevod do jazyka Java

Podobne ako iné programovacie jazyky, aj v jave existujú 2 typy konverzií:

Implicitná konverzia typu

  • Toto je všeobecne to, čo nazývame Rozšírenie konverzie, a to sa dá urobiť automaticky, pretože sa presúvame k širším typom údajov. Ak teda máme 32-bitové celé číslo a chceme prejsť na 64-bitové celé číslo, je to širšie. Hodnotu je možné bezpečne presunúť, aby sa dali robiť implicitne. A kompilátor sa musí rozhodnúť, ako tieto konverzie uskutočniť, a pravidlá sú celkom jednoduché.
  • Ak máme výraz s viacnásobnými (zmiešanými) celočíselnými veľkosťami, ak máme krátke a dlhé, bez ohľadu na to, aká je najväčšia celočíselná veľkosť, na čo sa to prevedie. Takže ak urobíme operáciu s krátkym a dlhým časom, ten krátky bude implicitne zahnaný.
  • Ak vykonáme operáciu so zmiešanými veľkosťami s pohyblivou rádovou čiarkou, takže máme float a double, vždy sa zdvojnásobia, pretože double je najväčšia veľkosť s pohyblivou rádovou čiarkou.
  • A potom, ak máme operáciu, ktorá používa zmiešané celočíselné typy a typy s pohyblivou rádovou čiarkou, kompilátor prenesie na čokoľvek s najväčšou pohyblivou čiarkou v rovnici. Takže ak urobíme operáciu s dlhým a nad vodou, bude dlho nasadená na nad vodou.
  • Ak urobíme operáciu s dlhým a dvojitým, potom bude dlhý vrhnutý na dvojitý.

Explicitné prevedenie typu

  • Pri použití tejto operácie odovzdávania obsahu v našom kóde výslovne vykonávame. Keď to urobíme, preberáme zodpovednosť za všetko, čo sa stane v dôsledku tohto typu konverzie. Z tohto dôvodu môžeme vykonávať rozširujúcu sa konverziu aj úzku. Takže rozšírenie od 32-bitových po 64-bitové, zúženie od 64-bitových po 32-bitové. Mali by sme si len byť vedomí toho, že vieme, čo by sa mohlo stať.
  • Ak urobíme explicitné obsadenie z pohyblivej čiary na celé číslo, takže pohyblivé body môžu mať zlomkovú časť, celé číslo nemôže, takže akákoľvek zlomková časť by bola vynechaná, keď odhodíme túto floatáciu na celé číslo.
  • Pri vykonávaní zúženej konverzie chcete byť opatrní. Ak máme 64-bitové celé číslo, má schopnosť uchovávať hodnoty, ktoré sú príliš veľké na to, aby sa zmestili do 32-bitového celého čísla.
  • Ak teda prenesieme týchto 64 bitov na 32-bit, program to skutočne urobí, ale ak je hodnota príliš veľká na to, aby sa zmestili do 32-bitov, z toho vyplynú nejaké zvláštne výsledky. Takže sa chcete ubezpečiť, že keď odlievate, robí zúženie, že viete, že to, čo robíte, je bezpečné.
  • A posledná je, že chcete byť opatrní pri prevode z celého čísla na pohyblivú desatinnú čiarku, pretože ak máte celé číslo s veľkým počtom platných číslic, kvôli spôsobu ukladania pohyblivej desatinnej čiarky by ste mohli stratiť niektoré z tieto významné číslice.

Príklady konverzie typu

Príklady podrobnej konverzie typov uvedené nižšie:

kód:

Máme tu jednoduchý program, niektoré deklarácie hore, plaváky, dvojité, bajty, krátke a dlhé a premenné sú pomenované, aby pomohli určiť, aké sú ich typy, ako float je floatVal,

kód:

long je longVal

kód:

A program iba vytlačí správu o úspechu, ak je spustená.

Pozrime sa teda, ako sa tu hrá časť konverzie typu. Poďme teda na prvé, poďme do toho a vytvorme premennú. Máme krátke a budeme to len nazývať výsledok.

V skutočnosti to poďme nazvať výsledok1. A urobme len jednoduché zadanie. A tak najprv k nemu priradíme byteVal. Teraz, keď očakávame, že ak to pôjdeme ďalej a spustíme to, bežte úspešne.

kód:

Výkon:

Vieme, že je to platné priradenie, pretože bajt je možné priradiť ku krátkemu, pretože ide o rozširujúcu sa konverziu.

Ak však vezmeme tento byteVal a namiesto toho z neho urobíme longVal, takže teraz je to vlastne dlhé, ak spustíme toto, zobrazí sa tu chybová správa, ktorá hovorí nekompatibilný typ, možná strata konverzie z dlhých na krátke.

kód:

Čo tu teda môžeme urobiť, je to, že môžeme urobiť explicitné obsadenie. Budeme pred tým len skrátene. Takže teraz je to platné, aby sme ho mohli spustiť.

kód:

A samozrejme to funguje. Pretože dlho nemohlo ísť na krátke, pretože to bolo zúženie konverzie.

Výkon:

Ale tým, že explicitný obsadenie pred ním, je teraz platné. Ak chceme, môžeme vložiť notový zápis veľmi jasne a povedať, že viete, vieme, hoci konverzia bajtov je legálna, chceme výslovne ukázať, že odovzdávame krátke obsadenie, môžeme urobiť a to je úplne legálne.

kód:

Výkon:

Takže teraz sa pozrime na iný scenár. Chystáme sa vytvoriť ďalšiu premennú, ktorú nazveme result2 , a result2 je tiež krátky. A to, čo tu chceme urobiť, je, že si vezmeme náš byteVal a my chceme odpočítať longVal. Teraz vieme, že to nie je legálne, pretože výsledkom výrazu bude veľkosť najväčšieho celého čísla, ktorým je dĺžka.

kód:

Ak to teda spustíme, zobrazí sa chyba, že nie je platné prevádzať dlho na krátke.

Povedzme však, že chceme pokračovať a tento výsledok udržať ako krátky. Musíme urobiť obsadenie. Chceme však obsadiť tento čas, čo je hodnota celého výsledku tu. To, čo sa chystáme urobiť, je preto pred obsadením.

Sem vložte krátke obsadenie. A celú záležitosť zabalte do zátvoriek. A spustite to.

kód:

Bude úspešne fungovať.

Výkon:

Teraz deklarujte inú premennú s názvom result3, ale deklarujte ju ako dlhú. Takže sme dostali výsledok 3 a čo tu urobíme, pridelíme to náš longVal - floatVal. Spustíme to tak, že sa stratí konverzia konverzie z plávajúcej na dlhú, pretože vždy, keď máme celé číslo a akýkoľvek typ s pohyblivou rádovou čiarkou, výsledkom bude typ s pohyblivou rádovou čiarkou.

kód:

Pokračujme a náš výsledok teraz premeníme na plávajúce. Takže vytvorením tohto plaváka by sme mali byť schopní pokračovať a spustiť ho. A beží úspešne.

kód:

Výkon:

Ale teraz, keď vezmeme floatVal tu a prevedieme to na doubleVal a ak sa to pokúsime spustiť, dostaneme chybu, pretože hovorí, že výsledok bude dvojitý, pretože keď urobíte celé číslo a pohyblivú rádovú čiarku, je to veľkosť najväčšieho pohyblivého bodu v rovnici.

kód:

Poďme teda tento výsledok zdvojnásobiť, aby sme ho teraz mohli spustiť.

kód:

Výkon:

záver

1. Premenná je v jazyku Java výrazne napísaná
2. Primitívne typy

  • Typy celých čísel, typy s pohyblivou rádovou čiarkou, typ char, booleovský typ

3. Prevod typu

  • Často sa musíme presúvať medzi rôznymi typmi, pretože naše programy, pretože sa stávajú zložitejšími, budú pravdepodobne zahŕňať viac typov údajov.
  • Kompilátor dokáže spracovať konverzie typov, ktoré sa rozširujú, presúvajú sa z jedného typu na druhý a môžu obsahovať väčšie hodnoty,
  • Pomocou odovzdávania však môžete explicitne vykonať tie typy konverzií, ktoré kompilátor nemôže vykonať automaticky.

Odporúčané články

Toto je príručka pre prevod typu do jazyka Java. Tu diskutujeme úvod, typ konverzie v java, ako sú implicitné a explicitné spolu s príkladmi pomocou rôznych situáciách. Viac informácií nájdete aj v nasledujúcich článkoch

  1. Konštruktor v jazyku Java
  2. Triedenie v Jave
  3. Konštruktor v jazyku Java
  4. JCheckBox v Jave
  5. Hodiť vs Hodí | Top 5 rozdielov, ktoré by ste mali vedieť
  6. Ako implementovať začiarkavacie políčko v Bootstrap
  7. Konverzia v jazyku Java s príkladmi

Kategórie: