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.








