Avant d’entrer dans le vif du sujet, commençons par quelques notions fondamentales. Un opérateur Java est un symbole spécial qui peut être appliqué à un ensemble de variables, valeurs ou littéraux – appelés opérandes – et qui renvoie un résultat. Le terme opérande, que nous utiliserons tout au long de ce chapitre, fait référence à la valeur ou à la variable sur laquelle l’opérateur est appliqué. La Figure 1 montre l’anatomie d’une opération Java.

Le résultat de l’opération est simplement appelé le résultat. La Figure 1 contient en réalité une seconde opération, avec l’opérateur d’affectation (=) utilisé pour stocker le résultat dans la variable c.
Types d’Opérateurs en Java
Java prend en charge trois types d’opérateurs : unaire, binaire et ternaire. Ces types d’opérateurs peuvent être appliqués respectivement à un, deux ou trois opérandes.
Les opérateurs Java ne sont pas nécessairement évalués de gauche à droite. Dans l’exemple suivant, la seconde expression est en réalité évaluée de droite à gauche, étant donné les opérateurs spécifiques impliqués :
int biscuits = 4;
double recompense = 3 + 2 * --biscuits;
System.out.print("L'animal du zoo reçoit : "+recompense+" points de récompense");
Dans cet exemple, vous décrémentez d’abord biscuits à 3, puis multipliez la valeur résultante par 2, et enfin ajoutez 3. La valeur est ensuite automatiquement promue de 9 à 9.0 et assignée à recompense. Les valeurs finales de recompense et biscuits sont respectivement 9.0 et 3, avec l’affichage suivant :
L’animal du zoo reçoit : 9.0 points de récompense
Mise en Pratique
Pour vous aider à maîtriser ces concepts, essayez de résoudre cet exercice simple :
int pommes = 5;
double total = 2 + 3 * ++pommes;
System.out.print("Total des fruits : "+total);
Prenez un moment pour calculer le résultat avant de continuer. C’est un excellent moyen de tester votre compréhension des opérateurs et de leur ordre d’évaluation.
Précédence des Opérateurs Java
Pensez à la façon dont vous lisez : en français, nous lisons de gauche à droite, mais en mathématiques, certains opérateurs ont la priorité sur d’autres. En Java, c’est pareil ! La détermination de l’ordre d’évaluation des opérateurs s’appelle la précédence des opérateurs. Voyons un exemple concret :
var perimetre = 2 * hauteur + 2 * longueur;
Ajoutons des parenthèses optionnelles pour montrer comment le compilateur évalue cette instruction :
var perimetre = ((2 * hauteur) + (2 * longueur));
L’opérateur de multiplication (*) a une précédence plus élevée que l’opérateur d’addition (+), donc hauteur et longueur sont d’abord multipliés par 2 avant d’être additionnés. L’opérateur d’affectation (=) a l’ordre de précédence le plus bas, donc l’affectation à la variable perimetre est effectuée en dernier.
Ordre de Précédence en Java
À moins d’être modifié par des parenthèses, les opérateurs Java suivent un ordre d’opération strict. Voici les règles de priorité, classées par ordre décroissant :
Opérateur | Symboles et exemples | Évaluation |
---|---|---|
Opérateurs post-unaires | expression++, expression– | Gauche à droite |
Opérateurs pré-unaires | ++expression, –expression | Gauche à droite |
Autres opérateurs unaires | -, !, ~, +, (type) | Droite à gauche |
Cast | (Type)reference | Droite à gauche |
Multiplication/division/modulo | *, /, % | Gauche à droite |
Addition/soustraction | +, – | Gauche à droite |
Opérateurs de comparaison | <, >, <=, >=, instanceof | Gauche à droite |
Égalité/inégalité | ==, != | Gauche à droite |
ET logique | & | Gauche à droite |
OU exclusif logique | ^ | Gauche à droite |
OU inclusif logique | | | Gauche à droite |
ET conditionnel | && | Gauche à droite |
OU conditionnel | || | Gauche à droite |
Opérateur ternaire | condition ? expression1 : expression2 | Droite à gauche |
Opérateurs d’affectation | =, +=, -=, *=, /=, %=, &=, ^=, |= | Droite à gauche |
Opérateur flèche | -> | Droite à gauche |
Application Pratique
Voici un exemple concret pour mettre en pratique ces règles de précédence :
int ventes = 100;
double bonus = 50 + 25 * ++ventes / 50;
System.out.println("Bonus du vendeur : " + bonus + " euros");
Essayez de résoudre cet exemple en suivant l’ordre de précédence. Les opérations seront effectuées dans cet ordre :
- L’incrémentation de ventes (++ventes)
- La division par 50
- La multiplication par 25
- L’addition de 50
- L’affectation à bonus
Opérateur flèche
L’opérateur flèche (->) est un opérateur binaire qui représente une relation entre deux opérandes. Vous le rencontrerez principalement dans les expressions lambda et les expressions switch. C’est un élément clé de la programmation fonctionnelle en Java.