Operaator Tulemus -------------------- + Liitmine - Lahutamine * Korrutamine / Jagamine % Täisarvulise jagamise jääk ++ Inkrement (suurendamine ühe võrra) += Omistamine liitmisega -= Omistamine lahutamisega *= Omistamine korrutamisega /= Omistamine jagamisega %= Jagatise jäägi omistamine -- Dekrement (vähendamine ühe võrra)
Peamised aritmeetilised operaatorid (liitmine, lahutamine, korrutamine, jagamine) funktsioneerivad harjumuspäraselt. Operaatorit "-" võib kasutada ka unaarsena (operandi märgi muutmiseks). Näites demonstreeritakse aritmeetiliste operaatorite kasutamist. Illustreeritakse samuti erinevust täisarvude ja ujupunktarvude jagamisel.
Operaator "%" leiab täisarvulise jagamise jäägi. Teda võib kasutada nii täis- kui ujupunktarvude korral. Näide .
Aritmeetilised omistamisoperaatorid on sümbioosid omistamisest
ja aritmeetilisest tehtest. Samaväärsed on operaatorid
a = a + 4;
ja
a += 4;
Nagu näha, teostatakse operandide vahel kõigepealt vastav aritmeetiline tehe ja seejärel omistatakse tulemus vasakpoolsele operandile. Võrreldes tavapärase avaldise omistamisega (a=a+4), töötavad aritmeetilised omistamisoperaatorid mõnevõrra kiiremini. Näide.
Inkrement (++) suurendab oma operandi ühe võrra, dekrement
(--) vähendab. Operaatori
x = x + 1;
võib inkrementi kasutades kirjutada ka nii
x++;
Analoogiliselt on operaator
x = x - 1;
samaväärne operaatoriga
x--;
Operaatoritel ++ ja -- on nii postfiks- kui ka prefiksvorm, st nad võivad
olla kirjutatud nii operandi ette kui taha. Prefiksvormi korral toimub
operandi suurendamine enne tema väärtuse kasutamist avaldise
arvutamisel, postfiksvormi korral aga pärast. Näiteks
y = ++x;
on samaväärne programmilõiguga
x = x + 1;
y = x;
Teisalt,
y = x++;
on aga kirjutatav ka nii:
y = x;
x = x + 1;
Operaator Tulemus ------------------------ == Võrdne != Mittevõrdne > Suurem < Väiksem >= Suurem-võrdne <= Väiksem-võrdne
Võrdlusoperatsioon annab loogilist (boolean) tüüpi väärtuse. Operandide võrdsust ja mittevõrdsust saab kontrollida suvalist tüüpi operandide korral (täis- ja reaalarvud, sümbolid ja tõeväärtused). Järjestusoperaatoreid (suurem, väiksem ...) saab rakendada aga vaid arvulist tüüpi operandidele.
Operaator Tulemus ---------------------------------------- & Loogiline JA | Loogiline VÕI ^ Loogiline MITTESAMAVÄÄRSUS || VÕI arvutamine lühiskeemi kohaselt && JA arvutamine lühiskeemi kohaselt ! Loogiline unaarne eitus &= Loogiline JA ning omistamine |= Loogiline VÕI ning omistamine == Võrdne != Mittevõrdne ?: Valikuoperaator
Mõnede loogiliste operaatorite tõeväärtustabel
A B A|B A&B A^B !A ------------------------------------------------ False False False False False True True False True False True False False True True False True True True True True True False False
Kui esimese operandi väärtus on true, on ka loogilise
operatsiooni VÕI (|) tulemus true, sõltumata teise
operandi väärtusest. Analoogiliselt on loogilise JA (&) tulemus
alati false, kui esimene operand on väärtusega false.
Kui operaatorite & ja | asemel kasutada operaatoreid &&
ja || (lühiskeemi operaatorid), siis kirjeldatud juhtudel Java ei
kasutagi teist operandi (tulemus jääb ju nagunii endiseks!).
Näiteks fragmendis
if (nimetaja != 0 && lugeja / nimetaja > 10)
võimaldab operaatori && kasutamine vältida nulliga
jagamist teises operandis.
Toome aga ka näite, kus on tingimata vaja kasutada operaatorit
&, mitte &&:
if (c==1 & e++ < 100) d = 100;
Operaatori & kasutamine garanteerib muutuja e suurendamise
sõltumata sellest, kas muutuja c on võrdne ühega
või mitte.
Üldkuju
muutuja = avaldis;
Muutuja ja avaldise tüüp peavad olema kooskõlas.
On võimalik kasutada ka omistamiste jada:
int x, y, z;
x = y = z = 100; // x, y, ja z väärtuseks saab 100.
Valikuoperaatoril (ternary operator) on kolm argumenti:
avaldis1?avaldis2:avaldis3
Avaldise 1 tulemus peab olema loogilist tüüpi. Kui selle väärtus
on true, on operatsiooni tulemus avaldis 2, muidu avaldis 3. Seega asendab
valikuoperatsioon mõnes kontekstis if-then-else operaatorit. Näiteks
fragmendis
ratio = denom == 0 ? 0 : num / denom;
kontrollitakse kõigepealt, kas muutuja denom väärtus
on 0. Kui nii, saab muutuja ratio väärtuseks 0, muidu
aga muutujate num ja denom jagatis. Näiteprogrammis
kasutatakse valikuoperaatorit arvu absoluutväärtuse arvutamiseks.
Avaldise arvutamisel teostatakse kõigepealt kõrgema prioriteediga tehted, seejärel madalama prioriteediga. Tehete järjekorda saab muuta ümarsulgude abil. Järgneva tabeli ülareas on veel nurksulud (massiivi indekseerimise "operaator") ja punkt (objektinimede eraldamise "operaator").
kõrgeim ---------------------------------------------------- () [] . ++ -- ~ ! * / % + - >> >>> << > >= < <= == != & ^ | && || ?: = operaator= ---------------------------------------------------- madalaim
Ümarsulud tõstavad nendesse asetatud avaldise prioriteeti.
Kui on vaja leida muutujate a ja b summa ning samade muutujate vahe jagatist,
tuleb soovitud tulemuse saamiseks avaldise
a + b / a - b
asemel kasutada avaldist
(a + b) / (a - b)
Esimesel juhul teostataks jagamine (/) kui kõrgema prioriteediga tehe enne kui liitmine-lahutamine ning tulemus oleks kaugel soovitust. Et aga liitmine-lahutamine saaksid tehtud enne jagamist, tuleb nende prioriteeti tõsta ümarsulgude abil nagu on ka tehtud teisel juhul.
Samuti võib ümarsulge kasutada avaldise loetavuse parandamiseks. Kumb järgnevatest avaldistest on näiteks lihtsamalt mõistetav?
a * 4 / b * c > 0 & b* 6 - c*7 <=8
((a * 4) /( b * c) > 0) & ((b* 6 - c*7) <=8)