Úvod do převodu typu v Javě

Jakmile budou proměnné stejně jako konstanty různých typů sloučeny do výrazu, mohou být změněny na podobný typ. Tato technika transformace jednoho předdefinovaného typu na jeden jiný se v Javě označuje jako převod typu.

Zadejte převod

V programovacích jazycích používáme 2 různé typy konverzí.

1. Implicitní převod typu

Pokud je konverze typu prováděna okamžitě pomocí kompilátoru bez zapojení programátora, je konverze typu známá jako implicitní konverze typu. Kompilátor zásadně podporuje každý operand k datovému typu největšího operandu. Během konverze dat nedochází ke ztrátě dat. Žádná šance na vyvolání výjimky prostřednictvím převodu, a proto je znám jako typově bezpečný. Převod menšího množství příliš velkého počtu může být implicitní konverzí. Transformace celočíselných dat typu float.

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

// Toto může být implicitní transformace, protože float může být větší než celé číslo, tedy žádný nedostatek dat a také žádná výjimka.

2. Explicitní převod typu

Převod typu, který lze vynutit pomocí programátoru, se nazývá explicitní převod typu. programátor v zásadě dává výraz, aby se stal konkrétním typem. Explicitní transformace typu může být známa jako typecasting. Během převodu dat může dojít ke ztrátě dat. Proto existuje pravděpodobnost ztráty detailů. mohlo by to vyvolat chybu, pokud by se to pokusilo provést bez typcastingu. Transformace většího počtu na menší velikosti může být explicitní konverzí.

float k=123.456
int i= (int) k

// může to být Explicitní konverze a (int) is typecast, operator. V tomto okamžiku se nám podaří uniknout výjimce, ale můžete vidět viditelnou ztrátu dat. tj. i = 123

// 0, 456 lze v procesu převodu zrušit

Zadejte převod do Java

Stejně jako jiné programovací jazyky existují i ​​java 2 typy převodu:

Implicitní převod typu

  • Toto je obecně to, čemu říkáme Rozšíření konverze, a to lze provést automaticky, protože se přesouváme na širší typy dat. Pokud tedy máme 32bitové celé číslo a chceme se přesunout na 64bitové celé číslo, je to širší. Hodnotu lze tedy bezpečně přesunout, takže je lze provádět implicitně. A kompilátor se musí rozhodnout, jak tyto převody provést, a pravidla jsou docela jednoduchá.
  • Pokud máme výraz s více (smíšenými) celočíselnými velikostmi, pokud máme krátké a dlouhé, bez ohledu na největší celočíselnou velikost je to, na co se převede. Pokud tedy provedeme operaci s krátkou a dlouhou, krátká bude implicitně vhozena.
  • Pokud provádíme operaci se smíšenými velikostmi s plovoucí desetinnou čárkou, takže máme plovoucí a dvojitou, vždy se zdvojnásobí, protože dvojitá je největší velikost s pohyblivou desetinnou čárkou.
  • A pokud máme operaci, která používá smíšené celočíselné typy a typy s plovoucí desetinnou čárkou, kompilátor převede na libovolný největší plovoucí bod v rovnici. Pokud tedy provedeme operaci s dlouhým a nad vodou, bude dlouhá hodina na nad vodou.
  • Pokud provedeme operaci s dlouhým a dvojitým, bude dlouhá vrhnuta na dvojnásobek.

Explicitní převod typu

  • Při použití této operace obsazení explicitně provádíme v našem kódu. Když to uděláme, přebíráme odpovědnost za vše, co se stane v důsledku tohoto typu konverze. Z tohoto důvodu můžeme provádět jak rozšiřující se konverzi, tak úzké. Takže rozšíření od 32-bit k 64-bit, zúžení, od 64-bit k 32-bit. Měli bychom si jen být vědomi toho, že víme, co by se mohlo stát.
  • Pokud uděláme explicitní obsazení z plovoucí desetinné čárky na celé číslo, takže plovoucí body mohou mít zlomkovou část, celé číslo nemůže, takže jakákoli zlomková část by byla vynechána, když odhodíme toto plovoucí číslo na celé číslo.
  • Chcete být opatrní při provádění zúžení konverze. Pokud máme 64bitové celé číslo, má schopnost uchovávat hodnoty, které jsou příliš velké, aby se vešly do 32bitového celého čísla.
  • Pokud tedy obsadíme 64 bitů na 32 bitů, program to skutečně provede, ale pokud je hodnota příliš velká na to, aby se vešly do 32 bitů, získáte z toho nějaké liché výsledky. Takže se chcete ujistit, že když odléváte, děláte zužující se obsazení, že víte, že to, co děláte, je bezpečné.
  • A poslední je, že chcete být opatrní při převodu z celého čísla na plovoucí desetinnou čárku, protože pokud máte celé číslo s velkým počtem platných číslic, z důvodu způsobu uložení plovoucí desetinné čárky byste mohli ztratit některé ty významné číslice.

Příklady převodu typu

Příklady převodu typu uvedené níže podrobně:

Kód:

Máme zde jednoduchý program, některé deklarace nahoře, float, double, byte, short a long a proměnné jsou pojmenovány, aby pomohly určit, jaké jsou jejich typy, jako float je floatVal,

Kód:

long je longVal

Kód:

A program pouze vytiskne zprávu o úspěchu, pokud je spuštěna.

Podívejme se tedy, jak se zde hraje část konverze typu. Nejdříve tedy pojďme a vytvořme proměnnou. Máme krátký a budeme to jen nazývat výsledek.

Ve skutečnosti pojďme to nazvat výsledek1. A udělejme jednoduché zadání. A tak nejprve k němu přiřadíme bajt. Nyní, jak očekáváme, pokud se do toho pustíme a spustíme to, běžte úspěšně.

Kód:

Výstup:

Víme, že je to platné přiřazení, protože bajt lze přiřadit do krátké, protože se jedná o rozšiřující se převod.

Pokud však vezmeme tento byteVal a místo toho ho uděláme longVal, takže nyní je to vlastně dlouho, pokud to spustíme, zobrazí se zde chybová zpráva, která říká nekompatibilní typ, možná ztráta konverze z dlouhé na krátkou.

Kód:

Co zde tedy můžeme udělat, je to, že můžeme udělat explicitní obsazení. Budeme jen krátce před tím. Teď je to platné, abychom to mohli spustit.

Kód:

A samozřejmě to funguje. Protože ta dlouhá nemohla jít na krátkou, protože to byla zúžená konverze.

Výstup:

Ale vložením explicitního obsazení před něj je nyní platné. Pokud chceme, můžeme dát notaci obsazení velmi explicitní a říci, že víte, víme, i když je konverze bajtů legální, chceme explicitně ukázat, že to vrháme vložením krátkého obsazení tam, můžeme to udělat to, a to je zcela legální.

Kód:

Výstup:

Nyní se tedy podívejme na jiný scénář. Chystáme se vytvořit další proměnnou, kterou nazveme result2 , a result2 je také krátký. A co tady chceme udělat, je, že si vezmeme náš byteVal a my chceme odečíst longVal. Teď víme, že to není legální, protože výsledkem výrazu bude velikost největšího celého čísla v něm, což je délka.

Kód:

Pokud to tedy spustíme, zobrazí se chyba, že není platné převádět dlouhé na krátké.

Řekněme však, že chceme pokračovat a tento výsledek udržet jako krátký. Musíme udělat obsazení. Ale chceme obsadit tentokrát je hodnota celého výsledku zde. Takže to, co uděláme, postaví před to krátké obsazení.

Zde vložte krátký obsazení. A celou věc zabalte do závorek. A běž to.

Kód:

Bude spuštěn úspěšně.

Výstup:

Nyní deklarujte další proměnnou zvanou result3, ale tuto proměnnou deklarujte jako dlouhou. Dostal jsem tedy výsledek 3 a co uděláme, je, že mu přidělíme náš longVal - floatVal. Spustíme to tak, že dojde ke ztrátě převodu převodu z plovoucího na dlouhý, protože kdykoli máme celé číslo a jakýkoli typ s plovoucí desetinnou čárkou, výsledkem bude typ s plovoucí desetinnou čárkou.

Kód:

Pojďme tedy převést náš výsledek na plovák. Takže vytvořením plováku bychom měli být schopni pokračovat a spustit jej. A běží úspěšně.

Kód:

Výstup:

Ale teď, pokud vezmeme floatVal sem a převedeme to na doubleVal a pokud se pokusíme spustit, dostaneme chybu, protože říká, že výsledek bude dvojitý, protože když uděláte celé číslo a pohyblivou čárku, je to velikost největšího plovoucího bodu v rovnici.

Kód:

Pojďme tedy tento výsledek zdvojnásobit, takže ho nyní můžeme spustit.

Kód:

Výstup:

Závěr

1. Proměnná je v Javě silně napsána
2. Primitivní typy

  • Celá čísla, typy s plovoucí desetinnou čárkou, typ char, Booleovský typ

3. Převod typu

  • Často se musíme pohybovat mezi různými typy, protože protože naše programy, jak se stávají složitější, budou pravděpodobně zahrnovat více typů dat.
  • Kompilátor dokáže zpracovat převody typu, které se rozšiřují a přecházejí z jednoho typu na druhý, který může obsahovat větší hodnoty,
  • Můžete však také použít casting k výslovnému provedení těch typů konverzí, které kompilátor nemůže provádět automaticky.

Doporučené články

Toto je příručka k převodu typu v jazyce Java. Zde diskutujeme úvod, typ konverze v java, jako implicitní a explicitní spolu s příklady pomocí různých situací. Další informace naleznete také v následujících článcích

  1. Konstruktor v Javě
  2. Třídění v Javě
  3. Konstruktor v Javě
  4. JCheckBox v Javě
  5. Throw vs Throw | 5 hlavních rozdílů, které byste měli vědět
  6. Jak implementovat zaškrtávací políčko v Bootstrapu
  7. Převod v Javě s příklady

Kategorie: