Pierwszeństwo operatorów Java

Pierwszeństwo operatorów określa kolejność, w jakiej operatory w wyrażeniu są oceniane.

Zanim zaczniesz czytać ten artykuł, powinieneś mieć podstawową wiedzę na temat operatorów Java.

Teraz spójrz na poniższe stwierdzenie:

 int myInt = 12 - 4 * 2;

Jaka będzie wartość myInt? Będzie to (12 - 4)*2, że jest 16? Czy będzie 12 - (4 * 2), to znaczy 4?

Gdy dwa operatory mają wspólny operand, 4w tym przypadku operator o najwyższym priorytecie jest obsługiwany jako pierwszy.

W Javie pierwszeństwo *jest większe niż -. Stąd mnożenie jest wykonywane przed odejmowaniem, a wartość myInt będzie wynosić 4.

Tabela pierwszeństwa operatorów

Poniższa tabela przedstawia pierwszeństwo operatorów w Javie; wyżej pojawia się w tabeli, tym wyższy jest jego priorytet.

Pierwszeństwo operatorów Java
Operatorzy Precedens
przyrostek przyrostka i dekrementacja ++ --
zwiększanie i zmniejszanie przedrostka oraz jednoargumentowe ++ -- + - ~ !
mnożny * / %
przyłączeniowy + -
Zmiana << >> >>>
relacyjny < > <= >= instanceof
równość == !=
bitowe AND &
bitowe wyłączne OR ^
bitowe OR |
logiczne AND &&
logiczne OR ||
potrójny ? :
zadanie = += -= *= /= %=
&= ^= |= <<= >>= >>>=

Przykład: pierwszeństwo operatora

 class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )

Wyjście :

 2

Pierwszeństwo operatora przedrostka ++jest większe niż w przypadku -operatora odejmowania. W związku z tym,

 wynik = a - ++ c - ++ b;

jest równa

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

Kiedy mamy do czynienia z wieloma operatorami i operandami w jednym wyrażeniu, dla większej przejrzystości można użyć nawiasów, jak w powyższym przykładzie. Wyrażenie w nawiasach jest oceniane jako pierwsze.

Asocjatywność operatorów w Javie

Jeśli wyrażenie ma dwa operatory o podobnym pierwszeństwie, wyrażenie jest oceniane zgodnie z jego asocjatywnością (od lewej do prawej lub od prawej do lewej). Weźmy przykład.

 a = b = c;

Tutaj wartość c jest przypisana do zmiennej b. Następnie wartość b jest przypisywana zmiennej a. Czemu? Dzieje się tak, ponieważ asocjatywność operatora = przebiega od prawej do lewej.

Poniższa tabela przedstawia asocjatywność operatorów Java wraz z ich łącznością.

Pierwszeństwo i łączność operatorów Java
Operatorzy Precedens Łączność
przyrostek przyrostka i dekrementacja ++ -- z lewej na prawą
zwiększanie i zmniejszanie przedrostka oraz jednoargumentowe ++ -- + - ~ ! od prawej do lewej
mnożny * / % z lewej na prawą
przyłączeniowy + - z lewej na prawą
Zmiana << >> >>> z lewej na prawą
relacyjny < > <= >= instanceof z lewej na prawą
równość == != z lewej na prawą
bitowe AND & z lewej na prawą
bitowe wyłączne OR ^ z lewej na prawą
bitowe OR | z lewej na prawą
logiczne AND && z lewej na prawą
logiczne OR || z lewej na prawą
potrójny ? : od prawej do lewej
zadanie = += -= *= /= %=
&= ^= |= <<= >>= >>>=
od prawej do lewej

Nie musisz tutaj wszystkiego zapamiętywać. W większości przypadków pierwszeństwo i łączność operatorów ma sens sam w sobie. W razie wątpliwości zawsze możesz wrócić do tego artykułu w celach informacyjnych. Możesz także użyć nawiasów, jeśli uważasz, że ułatwi to zrozumienie kodu.

Interesujące artykuły...