La priorité des opérateurs détermine l'ordre dans lequel les expressions sont exécutées dans une déclaration.
Il est possible d'ignorer la priorité d'opérateur en utilisant des parenthèses.
L'associativité détermine également un ordre d'exécution pour des opérateurs d'une priorité égale.
Un opérateur associatif à gauche signifie que l'opérande de gauche est d'abord calculée.
int resultat = a + b - c; // équivaut int resultat = (a + b) - c;
Un opérateur associatif à droite signifie que l'opérande de droite est d'abord calculée.
int resultat = a += b -= c = a + b; // équivaut int resultat = (a += (b -= (c = (a + b)))); double resultat = x * -y - 42 / z % --x + 2; // équivaut double resultat = (((x * (-y)) - ((42 / z) % (--x))) + 2);
La table suivante décrit la priorité des opérateurs, du moins élevé vers le plus élevé, ainsi que leur associativité.
Priorité | Opérateurs | Associativité |
---|---|---|
1 | = += -= *= /= %= <<= >>= >>>= &= |= ^= | De gauche à droite |
2 | ? : | De droite à gauche |
2 | || | De gauche à droite |
4 | && | De gauche à droite |
5 | | | De gauche à droite |
6 | ^ | De gauche à droite |
7 | & | De gauche à droite |
8 | == != | De gauche à droite |
9 | < <= > >= instanceof | De gauche à droite |
10 | << >> >>> | De gauche à droite |
11 | + - | De droite à gauche |
12 | * / % | De gauche à droite |
13 | (type) new | De droite à gauche |
14 | unaire : + - préfixe : ++ -- ~ ! |
De gauche à droite |
15 | () [] . suffixe ++ suffixe -- | De gauche à droite |