Precedenza degli operatori Java

La precedenza degli operatori determina l'ordine in cui vengono valutati gli operatori in un'espressione.

Prima di iniziare a leggere questo articolo, dovresti avere una conoscenza di base degli operatori Java.

Ora, dai un'occhiata alla dichiarazione qui sotto:

 int myInt = 12 - 4 * 2;

Quale sarà il valore di myInt? Sarà (12 - 4)*2, cioè 16? O lo sarà 12 - (4 * 2), cioè 4?

Quando due operatori condividono un operando comune, 4in questo caso viene utilizzato per primo l'operatore con la precedenza più alta.

In Java, la precedenza di *è maggiore di quella di -. Quindi, la moltiplicazione viene eseguita prima della sottrazione e il valore di myInt sarà 4.

Tabella di precedenza degli operatori

La tabella seguente elenca la precedenza degli operatori in Java; più in alto appare nella tabella, maggiore è la sua precedenza.

Precedenza degli operatori Java
Operatori Precedenza
incremento e decremento del suffisso ++ --
prefisso incremento e decremento e unario ++ -- + - ~ !
moltiplicativo * / %
additivo + -
cambio << >> >>>
relazionale < > <= >= instanceof
uguaglianza == !=
bit per bit AND &
OR esclusivo bit per bit ^
OR bit per bit inclusivo |
AND logico &&
OR logico ||
ternario ? :
Incarico = += -= *= /= %=
&= ^= |= <<= >>= >>>=

Esempio: precedenza degli operatori

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

Uscita :

 2

La precedenza dell'operatore del prefisso ++è maggiore di quella -dell'operatore di sottrazione. Quindi,

 risultato = a - ++ c - ++ b;

è equivalente a

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

Quando si ha a che fare con più operatori e operandi in una singola espressione, è possibile utilizzare le parentesi come nell'esempio precedente per maggiore chiarezza. L'espressione tra parentesi viene valutata per prima.

Associatività degli operatori in Java

Se un'espressione ha due operatori con precedenza simile, l'espressione viene valutata in base alla sua associatività (da sinistra a destra o da destra a sinistra). Facciamo un esempio.

 a = b = c;

Qui, il valore di c è assegnato alla variabile b. Quindi il valore di b viene assegnato alla variabile a. Perché? È perché l'associatività dell'operatore = va da destra a sinistra.

La tabella seguente mostra l'associatività degli operatori Java insieme alla loro associatività.

Precedenza e associatività degli operatori Java
Operatori Precedenza Associatività
incremento e decremento del suffisso ++ -- da sinistra a destra
prefisso incremento e decremento e unario ++ -- + - ~ ! da destra a sinistra
moltiplicativo * / % da sinistra a destra
additivo + - da sinistra a destra
cambio << >> >>> da sinistra a destra
relazionale < > <= >= instanceof da sinistra a destra
uguaglianza == != da sinistra a destra
bit per bit AND & da sinistra a destra
OR esclusivo bit per bit ^ da sinistra a destra
OR bit per bit inclusivo | da sinistra a destra
AND logico && da sinistra a destra
OR logico || da sinistra a destra
ternario ? : da destra a sinistra
Incarico = += -= *= /= %=
&= ^= |= <<= >>= >>>=
da destra a sinistra

Non è necessario memorizzare tutto qui. La maggior parte delle volte, la precedenza e l'associatività degli operatori ha senso in sé. Puoi sempre tornare a questo articolo come riferimento in caso di dubbio. Inoltre, puoi usare le parentesi se pensi che renda il tuo codice più facile da capire.

Articoli interessanti...