Přednost operátora Java

Priorita operátorů určuje pořadí, ve kterém jsou operátory ve výrazu vyhodnoceny.

Než začnete číst tento článek, měli byste mít základní znalosti o operátorech Java.

Nyní se podívejte na prohlášení níže:

 int myInt = 12 - 4 * 2;

Jaká bude hodnota myInt? Bude (12 - 4)*2, to znamená 16? Nebo to bude 12 - (4 * 2), to znamená, že 4?

Když dva operátoři sdílejí společný operand, 4v tomto případě je nejprve operován operátor s nejvyšší prioritou.

V Javě je priorita *vyšší než -. Násobení se tedy provádí před odečtením a hodnota myInt bude 4.

Tabulka priorit operátora

Níže uvedená tabulka uvádí prioritu operátorů v Javě; čím vyšší je v tabulce, tím vyšší je jeho priorita.

Přednost operátora Java
Operátoři Přednost
přírůstek a úbytek postfixu ++ --
přírůstek a úbytek předpony a unární ++ -- + - ~ !
multiplikativní * / %
přísada + -
posun << >> >>>
relační < > <= >= instanceof
rovnost == !=
bitové AND &
bitový exkluzivní OR ^
bitové včetně NEBO |
logické AND &&
logické NEBO ||
trojice ? :
úkol = += -= *= /= %=
&= ^= |= <<= >>= >>>=

Příklad: Přednost 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

Přednost operátoru předpony ++je vyšší než priorita -operátoru odečítání. Proto,

 result = a - ++ c - ++ b;

je ekvivalentní k

 result = a - (++ c) - (++ b);

Při práci s více operátory a operandy v jediném výrazu můžete pro přehlednost použít závorky jako ve výše uvedeném příkladu. Nejprve se vyhodnotí výraz uvnitř závorek.

Asociativita operátorů v Javě

Pokud má výraz dva operátory s podobnou prioritou, je výraz vyhodnocen podle jeho asociativity (zleva doprava nebo zprava doleva). Vezměme si příklad.

 a = b = c;

Zde je hodnota c přiřazena proměnné b. Pak je hodnotě b přiřazena proměnná a. Proč? Je to proto, že asociativita operátoru = je zprava doleva.

Tabulka níže ukazuje asociativitu operátorů Java spolu s jejich asociativitou.

Přednost operátora Java a asociativita
Operátoři Přednost Asociativita
přírůstek a úbytek postfixu ++ -- zleva do prava
přírůstek a úbytek předpony a unární ++ -- + - ~ ! zprava doleva
multiplikativní * / % zleva do prava
přísada + - zleva do prava
posun << >> >>> zleva do prava
relační < > <= >= instanceof zleva do prava
rovnost == != zleva do prava
bitové AND & zleva do prava
bitový exkluzivní OR ^ zleva do prava
bitové včetně NEBO | zleva do prava
logické AND && zleva do prava
logické NEBO || zleva do prava
trojice ? : zprava doleva
úkol = += -= *= /= %=
&= ^= |= <<= >>= >>>=
zprava doleva

Zde si nemusíte pamatovat vše. Většinu času má přednost a asociativita operátorů sama o sobě smysl. V případě pochybností se můžete k tomuto článku kdykoli vrátit. Můžete také použít závorky, pokud si myslíte, že to usnadňuje pochopení vašeho kódu.

Zajímavé články...