Priorité des opérateurs | Java
Java a des règles bien définies pour spécifier l’ordre dans lequel les opérateurs d’une expression sont évalués lorsque l’expression a plusieurs opérateurs. Par exemple, la multiplication et la division ont une priorité plus élevée que l’addition et la soustraction. Les règles de priorité peuvent être annulées par des parenthèses explicites.
Ordre de priorité
Lorsque deux opérateurs partagent un opérande, l’opérateur ayant la priorité la plus élevée commence en premier. Par exemple, 1 + 2 * 3 est traité comme 1 + (2 * 3), car la multiplication a une priorité plus élevée que l’addition.
Associativité
Lorsqu’une expression a deux opérateurs avec la même priorité, l’expression est évaluée en fonction de son associativité. Par exemple, a = b = c = 5 est traité comme a = (b = (c = 5)), les trois variables ont la valeur 5, car l’opérateur = a une associativité de droite à gauche.
Le tableau suivant montre tous les opérateurs Java à partir de la priorité la plus élevée à la priorité la plus faible.
[] . () |
Accès aux éléments du tableau Accès à un membre d’objet parenthèses |
++ – – |
post-incrément post-décrément |
+ – ! ~ |
plus moins opérateur logique NOT opérateur bitwise NOT |
() new |
transtypage création d’objet |
* / % |
multiplicatif |
+ – + |
additif concaténation de chaînes |
<< >> >>> |
décalage |
< <= > >= instanceof |
relationnel |
== != |
égalité |
& | AND bit à bit |
^ | XOR |
| | OR bit à bit |
&& | AND logique |
|| | OR logique |
?: | Opérateur ternaire |
= += -= *= /= %= &= ^= |= <<= >>= >>>= |
Affectation |
Exemple 1: Priorité des opérateurs
public class Main { public static void main(String[] args) { int x = 4, y = 1, z = 1, res; res = x-++y-++z; System.out.println(res); } }
Sortie:
0
La priorité de l’opérateur ++ est supérieure à celle de l’opérateur -.
Exemple 2: Priorité des opérateurs
public class Main { public static void main(String[] args) { int x = 2; int y = 3; int z = ++x * y--; System.out.println(z); } }
Sortie:
9
La priorité de l’opérateur ++ et — est supérieure à celle de l’opérateur *.