Prednosť operátora určuje poradie, v ktorom sú operátory vo výraze vyhodnotené.
Skôr ako začnete čítať tento článok, mali by ste mať základné znalosti o operátoroch Java.
Teraz sa pozrite na vyhlásenie uvedené nižšie:
int myInt = 12 - 4 * 2;
Aká bude hodnota myInt? To bude (12 - 4)*2
, to znamená, že 16
? Alebo bude 12 - (4 * 2)
, teda 4
,?
Keď dvaja operátori zdieľajú spoločný operand, 4
v tomto prípade sa najskôr operuje operátor s najvyššou prednosťou.
V Jave je prednosť pred *
vyššou ako -
. Násobenie sa teda vykoná pred odčítaním a hodnota myInt bude 4.
Tabuľka predností operátora
V nasledujúcej tabuľke je uvedená priorita operátorov v prostredí Java; čím vyššie je uvedená v tabuľke, tým vyššia je jej prednosť.
Prednosť operátora JavaOperátorov | Prednosť |
---|---|
prírastok a úbytok postfixu | ++ -- |
prírastok a úbytok prefixu a unárne | ++ -- + - ~ ! |
multiplikatívne | * / % |
prísada | + - |
posun | << >> >>> |
vzťahový | < > <= >= instanceof |
rovnosť | == != |
bitové AND | & |
bitové exkluzívne ALEBO | ^ |
bitový vrátane OR | | |
logické AND | && |
logické ALEBO | || |
ternárny | ? : |
zadanie | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
Príklad: prednosť operátora
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ýstup :
2
Prednosť operátora prefixu ++
je vyššia ako prednosť -
operátora odčítania. Teda
výsledok = a - ++ c - ++ b;
je ekvivalentné k
výsledok = a - (++ c) - (++ b);
Keď pracujete s viacerými operátormi a operandmi v jednom výraze, môžete kvôli zrozumiteľnosti použiť zátvorky ako v príklade vyššie. Najskôr sa vyhodnotí výraz v zátvorke.
Asociativita operátorov v Jave
Ak má výraz dva operátory s podobnou prednosťou, bude sa výraz hodnotiť podľa jeho asociativity (zľava doprava alebo zľava doprava). Zoberme si príklad.
a = b = c;
Tu je hodnota c priradená premennej b. Potom je hodnote b priradená premenná a. Prečo? Je to preto, že asociativita operátora = je sprava doľava.
Nasledujúca tabuľka zobrazuje asociativitu operátorov Java spolu s ich asociativitou.
Prednosť a asociatívnosť operátora JavaOperátorov | Prednosť | Asociatívnosť |
---|---|---|
prírastok a úbytok postfixu | ++ -- | zľava doprava |
prírastok a úbytok prefixu a unárne | ++ -- + - ~ ! | zprava doľava |
multiplikatívne | * / % | zľava doprava |
prísada | + - | zľava doprava |
posun | << >> >>> | zľava doprava |
vzťahový | < > <= >= instanceof | zľava doprava |
rovnosť | == != | zľava doprava |
bitové AND | & | zľava doprava |
bitové exkluzívne ALEBO | ^ | zľava doprava |
bitový vrátane OR | | | zľava doprava |
logické AND | && | zľava doprava |
logické ALEBO | || | zľava doprava |
ternárny | ? : | zprava doľava |
zadanie | = += -= *= /= %= &= ^= |= <<= >>= >>>= | zprava doľava |
Tu si nemusíte pamätať všetko. Väčšinou má prednosť a asociatívnosť operátorov zmysel sama o sebe. V prípade pochybností sa môžete kedykoľvek vrátiť k tomuto článku ako referencia. Môžete tiež použiť zátvorky, ak si myslíte, že uľahčuje pochopenie vášho kódu.