Andmetüüpide teisendamine

Üht tüüpi andmete teisendamine teiseks on alati teostatav ühilduvate andmetüüpide korral. Näiteks võib alati muutujale tüüpi long omistada int-tüüpi muutuja väärtus. Küll aga ei saa vahetult omistada byte-tüüpi muutujale double-tüüpi väärtust.

Automaatne tüübiteisendus Javas

See on teostatav kahel tingimusel:

  1. Tüübid on ühilduvad.
  2. Selle muutuja tüüp, millele väärtus omistatakse, on laiem lähteväärtuse tüübist.

Näiteks int-tüüpi muutujale võib omistada alati byte- või short-tüüpi väärtust, mitte aga boolean- või long-tüüpi

Mitteühilduvate tüüpide teisendamine

Kui andmetüübid on mitteühilduvad, tuleb tüübiteisendusel kasutada tüübiteisenduse operatsiooni:

(lõppväärtuse_tüüp) väärtus

Näiteks

int a;
byte b;
// ...
b = (byte) a;

Kui muutuja a väärtus ületab 256, siis saab b väärtuseks jagatise a/256 jääk. Siin on veel selgitusi ja näiteid

Automaatne tüübiteisendus avaldistes

Avaldiste arvutamisel võib Java vahetulemuste arvutamiseks kasutada pikemaid muutujaid, kui lähteoperandid. Näiteks programmilõigus

byte a = 40;
byte b = 50;
byte c = 100;
int d = a * b / c;

teisendatakse kõigepealt operandid int-tüüpi, alles seepeale leitakse avaldise väärtus.
Mõneti ootamatult osutub vigaseks ka programmilõik

byte b = 50;
b = b * 2; // Ei või omistada int-tüüpi väärtust byte-tüüpi muutujale!

Operandid b ja 2 teisendatakse enne avaldise arvutamist int-tüüpi ja int-tüüpi on ka tulemus! Korrektne oleks

byte b=50;
b = (byte)(b*2);

Tüübiteisendused eri tüüpi operandidega avaldiste arvutamisel

Kõik byte ja short-tüüpi muutujad teisendatakse eelnevalt int-tüüpi. Kui täisarvuliste operandidega avaldises vähemalt üks operand on tüüpi long, on ka tulemus tüüpi long. Järgmine prioriteet on tüübil float ja kõrgeim tüübil double. Tüübiteisendusi on demonstreeritud näites