Priorité des opérateurs Java

La priorité des opérateurs détermine l'ordre dans lequel les opérateurs d'une expression sont évalués.

Avant de commencer à lire cet article, vous devez avoir une connaissance de base des opérateurs Java.

Maintenant, jetez un œil à la déclaration ci-dessous:

 int myInt = 12 - 4 * 2;

Quelle sera la valeur de myInt? Sera-ce (12 - 4)*2, c'est-à-dire 16? Ou ce sera 12 - (4 * 2), c'est-à-dire 4?

Lorsque deux opérateurs partagent un opérande commun, 4dans ce cas, l'opérateur ayant la priorité la plus élevée est utilisé en premier.

En Java, la priorité de *est supérieure à celle de -. Par conséquent, la multiplication est effectuée avant la soustraction et la valeur de myInt sera 4.

Table de préséance des opérateurs

Le tableau ci-dessous répertorie la priorité des opérateurs en Java; plus il apparaît dans le tableau, plus sa priorité est élevée.

Priorité des opérateurs Java
Les opérateurs Priorité
postfix incrémenter et décrémenter ++ --
incrémentation et décrémentation du préfixe, et unaire ++ -- + - ~ !
multiplicatif * / %
additif + -
décalage << >> >>>
relationnel < > <= >= instanceof
égalité == !=
ET au niveau du bit &
OU exclusif au niveau du bit ^
OU inclusif au niveau du bit |
ET logique &&
OU logique ||
ternaire ? :
affectation = += -= *= /= %=
&= ^= |= <<= >>= >>>=

Exemple: priorité de l'opérateur

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

Sortie :

 2

La priorité de l'opérateur du préfixe ++est supérieure à celle de l' -opérateur de soustraction. Par conséquent,

 résultat = a - ++ c - ++ b;

est équivalent à

 résultat = a - (++ c) - (++ b);

Lorsque vous traitez de plusieurs opérateurs et opérandes dans une seule expression, vous pouvez utiliser des parenthèses comme dans l'exemple ci-dessus pour plus de clarté. L'expression entre parenthèses est évaluée en premier.

Associativité des opérateurs en Java

Si une expression a deux opérateurs avec une priorité similaire, l'expression est évaluée en fonction de son associativité (de gauche à droite ou de droite à gauche). Prenons un exemple.

 a = b = c;

Ici, la valeur de c est affectée à la variable b. Ensuite, la valeur de b est affectée à la variable a. Pourquoi? C'est parce que l'associativité de l'opérateur = est de droite à gauche.

Le tableau ci-dessous montre l'associativité des opérateurs Java ainsi que leur associativité.

Priorité et associativité des opérateurs Java
Les opérateurs Priorité Associativité
postfix incrémenter et décrémenter ++ -- de gauche à droite
incrémentation et décrémentation du préfixe, et unaire ++ -- + - ~ ! de droite à gauche
multiplicatif * / % de gauche à droite
additif + - de gauche à droite
décalage << >> >>> de gauche à droite
relationnel < > <= >= instanceof de gauche à droite
égalité == != de gauche à droite
ET au niveau du bit & de gauche à droite
OU exclusif au niveau du bit ^ de gauche à droite
OU inclusif au niveau du bit | de gauche à droite
ET logique && de gauche à droite
OU logique || de gauche à droite
ternaire ? : de droite à gauche
affectation = += -= *= /= %=
&= ^= |= <<= >>= >>>=
de droite à gauche

Vous n'avez pas besoin de tout mémoriser ici. La plupart du temps, la préséance et l'associativité des opérateurs ont un sens en soi. Vous pouvez toujours revenir à cet article pour référence en cas de doute. Vous pouvez également utiliser des parenthèses si vous pensez que cela facilite la compréhension de votre code.

Articles intéressants...