Comprendre les Opérateurs en Java

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.

Opérateurs Java: anatomie d'une opération

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érateurSymboles et exemplesÉvaluation
Opérateurs post-unairesexpression++, expression–Gauche à droite
Opérateurs pré-unaires++expression, –expressionGauche à droite
Autres opérateurs unaires-, !, ~, +, (type)Droite à gauche
Cast(Type)referenceDroite à gauche
Multiplication/division/modulo*, /, %Gauche à droite
Addition/soustraction+, –Gauche à droite
Opérateurs de comparaison<, >, <=, >=, instanceofGauche à 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 ternairecondition ? expression1 : expression2Droite à 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 :

  1. L’incrémentation de ventes (++ventes)
  2. La division par 50
  3. La multiplication par 25
  4. L’addition de 50
  5. 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.