Az operátor elsőbbsége meghatározza a kifejezés operátorainak kiértékelésének sorrendjét.
Mielőtt elkezdené olvasni ezt a cikket, alapismeretekkel kell rendelkeznie a Java operátorokról.
Most nézze meg az alábbi állítást:
int myInt = 12 - 4 * 2;
Mi lesz a myInt értéke? Lesz (12 - 4)*2
, vagyis 16
? Vagy az lesz 12 - (4 * 2)
, vagyis 4
?
Amikor két operátornak közös operandusza van, 4
ebben az esetben először a legnagyobb prioritású operátort működtetik.
A Java-ban a fontossági sorrend *
magasabb, mint a -
. Ezért a szorzást kivonás előtt hajtják végre, és a myInt értéke 4 lesz.
Operátor elsőbbségi táblázat
Az alábbi táblázat felsorolja az operátorok elsőbbségét a Java-ban; minél magasabb jelenik meg a táblázatban, annál nagyobb az elsőbbsége.
Java Operator elsőbbségOperátorok | Elsőbbség |
---|---|
postfix növekmény és csökkentés | ++ -- |
előtag növekmény és csökkentés, és unária | ++ -- + - ~ ! |
szorzó | * / % |
adalékanyag | + - |
váltás | << >> >>> |
relációs | < > <= >= instanceof |
egyenlőség | == != |
bitenkénti ÉS | & |
bitenként exkluzív VAGY | ^ |
bitenkénti befogadás VAGY | | |
logikus ÉS | && |
logikus VAGY | || |
hármas | ? : |
feladat | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
Példa: Operátor elsőbbség
class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )
Kimenet :
2
Az előtag operátori elsőbbsége ++
magasabb, mint a -
kivonás operátora. Ennélfogva,
eredmény = a - ++ c - ++ b;
egyenértékű
eredmény = a - (++ c) - (++ b);
Ha több operátort és operandusot kezel egyetlen kifejezésben, akkor az egyértelműség érdekében zárójeleket használhat, mint a fenti példa. Először a zárójelben lévő kifejezést értékelik.
Operátorok asszociativitása a Java-ban
Ha egy kifejezésnek két hasonló prioritású operátora van, akkor a kifejezést asszociativitása alapján értékelik (vagy balról jobbra, vagy jobbról balra). Vegyünk egy példát.
a = b = c;
Itt c értéket rendelünk a b változóhoz. Ezután b értéket rendelünk az a változóhoz. Miért? Ez azért van, mert az = operátor asszociativitása jobbról balra van.
Az alábbi táblázat a Java operátorok asszociativitását és asszociativitását mutatja be.
Java Operator elsőbbség és asszociativitásOperátorok | Elsőbbség | Asszociativitás |
---|---|---|
postfix növekmény és csökkentés | ++ -- | balról jobbra |
előtag növekmény és csökkentés, és unária | ++ -- + - ~ ! | jobbról balra |
szorzó | * / % | balról jobbra |
adalékanyag | + - | balról jobbra |
váltás | << >> >>> | balról jobbra |
relációs | < > <= >= instanceof | balról jobbra |
egyenlőség | == != | balról jobbra |
bitenkénti ÉS | & | balról jobbra |
bitenként exkluzív VAGY | ^ | balról jobbra |
bitenkénti befogadás VAGY | | | balról jobbra |
logikus ÉS | && | balról jobbra |
logikus VAGY | || | balról jobbra |
hármas | ? : | jobbról balra |
feladat | = += -= *= /= %= &= ^= |= <<= >>= >>>= | jobbról balra |
Itt nem kell mindent megjegyezned. Legtöbbször önmagában van értelme az operátorok elsőbbségének és asszociativitásának. Kétség esetén bármikor visszatérhet a cikkhez. Használhat zárójeleket is, ha úgy gondolja, hogy ez megkönnyíti a kód megértését.