Operaatori ülimuslikkus määrab avaldise operaatorite hindamise järjekorra.
Enne selle artikli lugema asumist peaksid teil olema Java-operaatorite põhiteadmised.
Nüüd vaadake järgmist väidet:
int myInt = 12 - 4 * 2;
Mis saab olema myInt väärtus? Kas see on (12 - 4)*2
, see tähendab 16
? Või saab 12 - (4 * 2)
, see on 4
,?
Kui kahel operaatoril on ühine operand, 4
juhitakse sel juhul kõigepealt suurima prioriteediga operaatorit.
Java-s *
on paremusjärjestus kui -
. Seega korrutatakse enne lahutamist ja myInt väärtus on 4.
Operaatori tähtsuse tabel
Allolevas tabelis on loetletud Java-operaatorite paremusjärjestus; mida kõrgem see tabelis ilmub, seda suurem on selle tähtsus.
Java-operaatori ülimuslikkusOperaatorid | Ülimuslikkus |
---|---|
postfixi juurdekasv ja vähenemine | ++ -- |
eesliide juurdekasv ja kahanemine ning unaarne | ++ -- + - ~ ! |
korrutav | * / % |
lisaaine | + - |
vahetustega | << >> >>> |
suhteline | < > <= >= instanceof |
võrdõiguslikkus | == != |
bitipidi JA | & |
bitiselt eksklusiivne VÕI | ^ |
bittide kaupa VÕI | | |
loogiline JA | && |
loogiline VÕI | || |
kolmepoolne | ? : |
ülesanne | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
Näide: Operaatori ülimuslikkus
class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )
Väljund :
2
Eesliite operaatori tähtsus ++
on suurem kui -
lahutamise operaatoril. Seega
tulemus = a - ++ c - ++ b;
on samaväärne
tulemus = a - (++ c) - (++ b);
Kui käsitletakse mitu operaatorit ja operandi ühes avaldises, saate selguse huvides kasutada sulge, nagu ülaltoodud näites. Kõigepealt hinnatakse sulgudes olevat väljendit.
Operaatorite assotsiatiivsus Java-s
Kui avaldisel on kaks sarnase tähtsusega operaatorit, hinnatakse avaldist selle assotsiatiivsuse järgi (kas vasakult paremale või paremalt vasakule). Võtame näite.
a = b = c;
Siin omistatakse muutujale b väärtus c. Siis määratakse muutuja a väärtus b. Miks? Sellepärast, et operaatori = assotsiatiivsus on paremalt vasakule.
Allpool olev tabel näitab Java-operaatorite assotsiatiivsust koos nende assotsiatiivsusega.
Java-operaatori ülimuslikkus ja assotsiatiivsusOperaatorid | Ülimuslikkus | Assotsiatiivsus |
---|---|---|
postfixi juurdekasv ja vähenemine | ++ -- | vasakult paremale |
eesliide juurdekasv ja kahanemine ning unaarne | ++ -- + - ~ ! | paremalt vasakule |
korrutav | * / % | vasakult paremale |
lisaaine | + - | vasakult paremale |
vahetustega | << >> >>> | vasakult paremale |
suhteline | < > <= >= instanceof | vasakult paremale |
võrdõiguslikkus | == != | vasakult paremale |
bitipidi JA | & | vasakult paremale |
bitiselt eksklusiivne VÕI | ^ | vasakult paremale |
bittide kaupa VÕI | | | vasakult paremale |
loogiline JA | && | vasakult paremale |
loogiline VÕI | || | vasakult paremale |
kolmepoolne | ? : | paremalt vasakule |
ülesanne | = += -= *= /= %= &= ^= |= <<= >>= >>>= | paremalt vasakule |
Siin pole vaja kõike meelde jätta. Enamasti on operaatorite ülimuslikkus ja assotsiatiivsus iseenesest mõistlik. Kahtluse korral võite alati selle artikli juurde tagasi pöörduda. Samuti võite kasutada sulgusid, kui arvate, et see muudab teie koodi hõlpsamini mõistetavaks.