Prednost operaterja določa vrstni red ocenjevanja operaterjev v izrazu.
Preden začnete brati ta članek, morate imeti osnovno znanje operaterjev Java.
Zdaj pa si oglejte spodnjo izjavo:
int myInt = 12 - 4 * 2;
Kakšna bo vrednost myInt? Ali bo (12 - 4)*2
, torej 16
? Ali pa bo 12 - (4 * 2)
, torej 4
?
Ko imata dva operaterja skupni operand, se 4
v tem primeru najprej operira z operaterjem z največjo prednostjo.
V Javi je prednost pred *
višjo od -
. Množenje se torej izvede pred odštevanjem in vrednost myInt bo 4.
Tabela prednosti operaterja
Spodnja tabela navaja prednost operaterjev v Javi; višje kot je v tabeli, večja je njegova prednost.
Prednost Java operaterjaOperaterji | Prednost |
---|---|
povečanje in zmanjšanje postfix | ++ -- |
povečanje in zmanjševanje predpone in unary | ++ -- + - ~ ! |
multiplikativni | * / % |
dodatek | + - |
premik | << >> >>> |
relacijski | < > <= >= instanceof |
enakost | == != |
bitni IN | & |
bitno izključno ALI | ^ |
bitovno vključujoče ALI | | |
logično IN | && |
logično ALI | || |
trojna | ? : |
dodelitev | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
Primer: Prednost operaterja
class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )
Izhod :
2.
Prednost pred operatorjem predpone ++
je večja kot prednost -
operaterja odštevanja. Torej,
rezultat = a - ++ c - ++ b;
je enakovredno
rezultat = a - (++ c) - (++ b);
Pri obravnavi več operatorjev in operandov v enem izrazu lahko za jasnost uporabite oklepaje kot v zgornjem primeru. Najprej se izračuna izraz v oklepaju.
Združenje operaterjev v Javi
Če ima izraz dva operaterja s podobno prednostjo, se izraz izračuna glede na njegovo asociativnost (bodisi od leve proti desni ali od desne proti levi). Vzemimo primer.
a = b = c;
Tu je vrednost c dodeljena spremenljivki b. Nato je spremenljivki a dodeljena vrednost b. Zakaj? To je zato, ker je asociativnost operatorja = od desne proti levi.
Spodnja tabela prikazuje asociativnost operaterjev Java skupaj z njihovo asociativnostjo.
Prednost in združenje operaterja JavaOperaterji | Prednost | Asociativnost |
---|---|---|
povečanje in zmanjšanje postfix | ++ -- | od leve proti desni |
povečanje in zmanjševanje predpone in unary | ++ -- + - ~ ! | desno na levo |
multiplikativni | * / % | od leve proti desni |
dodatek | + - | od leve proti desni |
premik | << >> >>> | od leve proti desni |
relacijski | < > <= >= instanceof | od leve proti desni |
enakost | == != | od leve proti desni |
bitni IN | & | od leve proti desni |
bitno izključno ALI | ^ | od leve proti desni |
bitovno vključujoče ALI | | | od leve proti desni |
logično IN | && | od leve proti desni |
logično ALI | || | od leve proti desni |
trojna | ? : | desno na levo |
dodelitev | = += -= *= /= %= &= ^= |= <<= >>= >>>= | desno na levo |
Tu si ni treba vsega zapomniti. Večina časa ima prednost in asociativnost operaterjev sama po sebi smiselna. V dvomih se lahko vedno vrnete na ta članek. Prav tako lahko uporabite oklepaje, če menite, da je vaša koda lažje razumljiva.