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, 4
dans 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 JavaLes 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 JavaLes 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.