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, 4
in 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 JavaOperatori | 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 JavaOperatori | 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.