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, 4ebben 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ég| Operá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ás| Operá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.








