Typovanie v jazyku Java je proces konverzie jedného typu údajov na iný typ údajov pomocou operátora casting. Keď priradíte hodnotu z jedného primitívneho typu údajov inému typu, nazýva sa to pretypovanie. Aby sa umožnilo použitie premennej špecifickým spôsobom, táto metóda vyžaduje explicitný pokyn pre kompilátor Java, aby zaobchádzal s premennou jedného typu údajov ako s premennou iného typu údajov.
Syntax:
variableName = () value;>
Typy typového odlievania
V jave existujú dva typy Type Casting:
- Odlievanie typu rozšírenia
- Odliatok úzkeho typu
Odlievanie typu rozšírenia
Nižší dátový typ sa transformuje na vyšší pomocou procesu známeho ako prelievanie typu rozšírenia. Casting implicitného typu a casting down sú niektoré názvy. Vyskytuje sa prirodzene. Keďže neexistuje žiadna šanca na stratu údajov, je to bezpečné. Odlievanie typu rozšírenia nastáva, keď:
- Cieľový typ musí byť väčší ako typ zdroja.
- Oba typy údajov musia byť navzájom kompatibilné.
Syntax:
larger_data_type variable_name = smaller_data_type_variable;>
Java
// Java program to demonstrate Widening TypeCasting> import> java.io.*;> > class> GFG {> > public> static> void> main(String[] args)> > {> > int> i => 10> ;> > > // Wideing TypeCasting (Automatic Casting)> > // from int to long> > long> l = i;> > > // Wideing TypeCasting (Automatic Casting)> > // from int to double> > double> d = i;> > > System.out.println(> 'Integer: '> + i);> > System.out.println(> 'Long: '> + l);> > System.out.println(> 'Double: '> + d);> > }> }> |
>
>Výkon
Integer: 10 Long: 10 Double: 10.0>
Odliatok úzkeho typu
Proces zmenšovania väčšieho dátového typu na menší je známy ako liatie typu zúženia. Casting up alebo explicitné pretypovanie sú iné názvy. Nedeje sa to len tak samo od seba. Ak to výslovne neurobíme, dôjde k chybe pri kompilácii. Zúženie typu casting nie je bezpečné, pretože môže dôjsť k strate údajov v dôsledku menšieho rozsahu povolených hodnôt nižšieho typu údajov. Operátor castingu pomáha pri procese explicitného castingu.
Syntax:
smaller_data_type variable_name = (smaller_data_type) larger_data_type_variable;>
Príklad:
Java
// Java Program to demonstrate Narrow type casting> import> java.io.*;> > class> GFG {> > public> static> void> main(String[] args)> > {> > double> i => 100.245> ;> > > // Narrowing Type Casting> > short> j = (> short> )i;> > int> k = (> int> )i;> > > System.out.println(> 'Original Value before Casting'> > + i);> > System.out.println(> 'After Type Casting to short '> > + j);> > System.out.println(> 'After Type Casting to int '> > + k);> > }> }> |
>
>Výkon
Original Value before Casting100.245 After Type Casting to short 100 After Type Casting to int 100>
Typy explicitného castingu
Existujú hlavne dva typy Explicit Casting:
- Explicitné vysielanie
- Explicitné downcasting
Explicitné vysielanie
Upcasting je proces pretypovania podtypu na nadtyp v smere stromu dedičnosti smerom nahor. Keď sa na objekt podtriedy odkazuje referenčná premenná nadtriedy, spustí sa automatický proces bez akéhokoľvek ďalšieho úsilia.
výška odsadenia
Príklad:
Java
// Java Program to demonstrate Explicit Upcasting> import> java.io.*;> > class> Animal {> > public> void> makeSound()> > {> > System.out.println(> 'The animal makes a sound'> );> > }> }> > class> Dog> extends> Animal {> > public> void> makeSound()> > {> > System.out.println(> 'The dog barks'> );> > }> > > public> void> fetch()> > {> > System.out.println(> 'The dog fetches a ball'> );> > }> }> class> GFG {> > public> static> void> main(String[] args)> > {> // Upcasting> > Animal animal => new> Dog();> > // Calls the overridden method in Dog class> > animal.makeSound();> > // This would give a compile error as fetch() is not> > // a method in Animal class> > // animal.fetch();> > }> }> |
>
>Výkon
The dog barks>
Explicitné downcasting
Keď typ podtriedy odkazuje na objekt nadradenej triedy, proces sa označuje ako downcasting. Ak sa to robí manuálne, kompilátor vydá chybu ClassCastException za behu. Dá sa to urobiť iba pomocou operátora instanceof. Možné je len zosúvanie objektu, ktorý už bol prenesený.
Príklad:
Java
// Java Program to demonstrate Explicit downcasting> import> java.io.*;> class> Animal {> > public> void> eat()> > {> > System.out.println(> 'The animal is eating.'> );> > }> }> > class> Cat> extends> Animal {> > public> void> meow()> > {> > System.out.println(> 'The cat is meowing.'> );> > }> }> > class> GFG {> > public> static> void> main(String[] args)> > {> > Animal animal => new> Cat();> > animal.eat();> > > // Explicit downcasting> > Cat cat = (Cat)animal;> > cat.meow();> > }> }> |
>
>Výkon
The animal is eating. The cat is meowing.>