Operaattorin etusija määrittää järjestyksen, jossa lausekkeen operaattorit arvioidaan.
Ennen kuin aloitat tämän artikkelin lukemisen, sinulla on oltava perustiedot Java-operaattoreista.
Katsokaa nyt alla olevaa lausetta:
int myInt = 12 - 4 * 2;
Mikä on myIntin arvo? Onko se (12 - 4)*2
, eli 16
? Tai se on 12 - (4 * 2)
, eli 4
?
Kun kahdella operaattorilla on yhteinen operandi, 4
tällöin ensin käytetään operaattoria, jolla on korkein etusija.
Javassa etusija *
on korkeampi kuin -
. Näin ollen kertolasku suoritetaan ennen vähennystä ja myInt: n arvo on 4.
Operaattorin prioriteettitaulukko
Seuraavassa taulukossa luetellaan Java-operaattoreiden etusija; korkeampi se näkyy taulukossa, sitä korkeampi sen etusija.
Java-operaattorin etusijaOperaattorit | Ensisijaisuus |
---|---|
jälkikorjauksen lisäys ja vähennys | ++ -- |
etuliitteen lisäys ja vähennys sekä unary | ++ -- + - ~ ! |
kerrannaisena | * / % |
lisäaine | + - |
siirtää | << >> >>> |
suhteellinen | < > <= >= instanceof |
tasa-arvo | == != |
bittiä JA | & |
bittikohtaisesti TAI | ^ |
bittikohtaisesti TAI | | |
looginen JA | && |
looginen TAI | || |
kolmipäiväinen | ? : |
tehtävä | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
Esimerkki: Operaattorin etusija
class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )
Tuotos :
2
Operaattorin etuliite ++
on korkeampi kuin -
vähennysoperaattorin. Siten,
tulos = a - ++ c - ++ b;
vastaa
tulos = a - (++ c) - (++ b);
Kun käsittelet useita operaattoreita ja operandeja yhdessä lausekkeessa, voit käyttää selkeyttä varten sulkeita, kuten edellisessä esimerkissä. Suluissa oleva ilmaisu arvioidaan ensin.
Java-operaattoreiden assosiatiivisuus
Jos lausekkeella on kaksi operaattoria, joilla on samanlainen etusija, lauseke arvioidaan sen assosiatiivisuuden mukaan (joko vasemmalta oikealle tai oikealta vasemmalle). Otetaan esimerkki.
a = b = c;
Tässä c-arvo osoitetaan muuttujalle b. Sitten b: n arvo määritetään muuttujalle a. Miksi? Se johtuu siitä, että = operaattorin assosiatiivisuus on oikealta vasemmalle.
Alla olevassa taulukossa on esitetty Java-operaattoreiden assosiatiivisuus yhdessä niiden assosiatiivisuuden kanssa.
Java-operaattorin etusija ja assosiatiivisuusOperaattorit | Ensisijaisuus | Assosiatiivisuus |
---|---|---|
jälkikorjauksen lisäys ja vähennys | ++ -- | vasemmalta oikealle |
etuliitteen lisäys ja vähennys sekä unary | ++ -- + - ~ ! | oikealta vasemmalle |
kerrannaisena | * / % | vasemmalta oikealle |
lisäaine | + - | vasemmalta oikealle |
siirtää | << >> >>> | vasemmalta oikealle |
suhteellinen | < > <= >= instanceof | vasemmalta oikealle |
tasa-arvo | == != | vasemmalta oikealle |
bittiä JA | & | vasemmalta oikealle |
bittikohtaisesti TAI | ^ | vasemmalta oikealle |
bittikohtaisesti TAI | | | vasemmalta oikealle |
looginen JA | && | vasemmalta oikealle |
looginen TAI | || | vasemmalta oikealle |
kolmipäiväinen | ? : | oikealta vasemmalle |
tehtävä | = += -= *= /= %= &= ^= |= <<= >>= >>>= | oikealta vasemmalle |
Sinun ei tarvitse muistaa kaikkea täällä. Suurimman osan ajasta operaattoreiden etusija ja assosiatiivisuus ovat itsessään järkeviä. Voit aina palata tähän artikkeliin, jos olet epävarma. Voit myös käyttää sulkeita, jos luulet sen helpottavan koodiasi.