Besplatni Java kurs - 11. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.
Nekada je potrebno da se podaci jednog tipa prevedu u drugi tip podataka. Npr. Java aplikacija se može koristiti u administrativne svrhe na nekom fakultetu. Za uspeh studenata na fakultetu nekada je potrebno koristiti prosek, što može biti float tip (npr. 9.72F), ali nekada je praktičnije koristiti cele brojeve, npr. u slučaju prikazivanja ocene (10) za šta je dovoljno koristiti tip int ili čak, zbog uštede memorije, tip byte. Moguće je izvršiti preobražaj podataka iz jednog tipa u drugi. Postupak preobražaja iz jednog tipa u drugi naziva se konverzija tipova.
Moguće je vršiti konverziju kako primitivnih, tako i referentnih tipova. U ovom postu biće objašnjena konverzija primitivnih tipova, a konverzija referentnih tipova biće objašnjena u nekom od narednih postova,
Postoji dve vrste konverzije tipova:
- automatksa (implicitna) konverzija tipova
- ručna (eksplicitna) konverzija tipova
Automatska konverzija tipova
Implicitna konverzija tipova dešava se u tri slučaja:
- tipovi su kompatibilni i izvorni tip je manji od odredišnog ILI
- celobrojni literal se dodeljuje promenljivama tipa char, byte, short ili long ILI
- u izrazima
Primer za prvi slučaj:
double prosek = 9.72F;
U navedenom primeru literal 9.72F koji je tipa float se automatski konvertuje u tip double.
Primer za drugi slučaj:
byte ocena = 10;
U navedenom primeru celobrojni literal 10 koji je tipa int se automatski konvertuje u tip byte. Celobrojni literali su podrazumevano uvek tipa int, o čemu sam pisao ranije.
Primer za treći slučaj:
byte x = 100;
byte y = 120;
int rezultat = x * y;
U navedenom primeru, u izrazu x puta y, operandi x i y su izvorno tipa byte. Kako je rezultat 12000 veći od maksimalne vrednosti tipa byte, došlo bi do problema kada bi i rezultat bio tipa byte. Java automatski unapređuje tipove u izrazima i to na sledeći način:
- tipovi char, byte i short automatski se konvertuju u tip int
- ako je bar jedan od operanada tipa long svi operandi se konvertuju u tip long
- ako je bar jedan od operanada tipa float svi operandi se konvertuju u tip float
- ako je bar jedan od operanada tipa double svi operandi se konvertuju u tip double
Ručna konverzija tipova
Eksplicitna konverzija tipova se koristi kada je izvorni tip veći od odredišnog, odnosno kada tip koji se želi preobraziti ima veći opseg vrednosti nego odredišni tip. Ručna konverzija se vrši tako što se ispred izvornog tipa u zagradi navede željeni odredišni tip, npr:
byte godina = (byte) 2020;
U navedenom primeru celobrojni literal 2020 koji je tipa int se ručno konvertuje u tip byte. Napomena: konverzija u datom primeru nema mnog smisla jer najveća celobrojna vredost koja se može smestiti u tip byte je 127, tako da će u ovom slučaju doći do gubitka podataka.
Oprezno pri ručnoj konverziji! U izvesnim slučajevima ručna konverzija ima smisla i neće doći do gubitka informacija, ali jako je bitno da dobro proučiš mehanizam konverzije i da tačno znaš šta radiš.
Pročitaj i nastavak:
Besplatni Java kurs - 12. deo - Java komentari i beline
No comments:
Post a Comment