↑
CHAPITRE 2.2

Opérateurs

Utiliser les opérateurs arithmétiques, logiques et de comparaison
Dans cette section, vous allez découvrir les opérateurs en Java. Les opérateurs permettent d'effectuer des opérations sur les variables et les valeurs : calculs mathématiques, comparaisons, opérations logiques, etc. Maîtriser les opérateurs est essentiel pour écrire des programmes Java fonctionnels et expressifs.

2.2Opérateurs

2.2.1 – Opérateurs arithmétiques

Les opérateurs arithmétiques permettent d'effectuer des calculs mathématiques de base : addition, soustraction, multiplication, division, et modulo. Ces opérateurs fonctionnent avec les types numériques (int, double, float, etc.).

➕ Les opérateurs arithmétiques de base

Opérateur Symbole Description Exemple Résultat
Addition + Additionne deux valeurs 5 + 3 8
Soustraction - Soustrait une valeur d'une autre 10 - 4 6
Multiplication * Multiplie deux valeurs 6 * 7 42
Division / Divise une valeur par une autre 15 / 3 5
Modulo % Reste de la division entière 17 % 5 2

📝 Exemples d'utilisation

Exemples de calculs :
int a = 10;
int b = 3;

int somme = a + b;        // 13
int difference = a - b;   // 7
int produit = a * b;      // 30
int quotient = a / b;     // 3 (division entière)
int reste = a % b;        // 1 (reste de 10 Ă· 3)

⚠️ Division entière vs Division décimale

La division en Java dépend des types utilisés :

Division entière (avec int)

Quand vous divisez deux entiers, le résultat est un entier (la partie décimale est tronquée) :

Division entière :
int a = 10;
int b = 3;
int resultat = a / b;  // Résultat : 3 (pas 3.333...)

int c = 7;
int d = 2;
int quotient = c / d;  // Résultat : 3 (pas 3.5)
Important : La partie décimale est perdue, pas arrondie !

Division décimale (avec double ou float)

Pour obtenir un résultat décimal, utilisez des types décimaux :

Division décimale :
double a = 10.0;
double b = 3.0;
double resultat = a / b;  // Résultat : 3.3333333333333335

// Ou avec int mais conversion
int x = 10;
int y = 3;
double resultat2 = (double) x / y;  // Résultat : 3.3333333333333335

🔢 Opérateur modulo (%)

L'opérateur modulo retourne le reste de la division entière :

Exemples de modulo :
int reste1 = 10 % 3;   // 1 (car 10 = 3Ă—3 + 1)
int reste2 = 17 % 5;   // 2 (car 17 = 5Ă—3 + 2)
int reste3 = 20 % 4;   // 0 (car 20 = 4Ă—5 + 0)
int reste4 = 7 % 2;    // 1 (utile pour vérifier si un nombre est pair/impair)
Cas d'usage du modulo :
• Vérifier si un nombre est pair : nombre % 2 == 0
• Vérifier si un nombre est impair : nombre % 2 == 1
• Obtenir le dernier chiffre : nombre % 10
• Vérifier la divisibilité : nombre % 5 == 0 (divisible par 5)

⚡ Opérateurs d'incrémentation et de décrémentation

Java offre des opérateurs spéciaux pour augmenter ou diminuer une variable de 1 :

Opérateurs ++ et --

Incrémentation et décrémentation :
int x = 5;

// Incrémentation (ajouter 1)
x++;        // x devient 6 (équivalent à x = x + 1)
++x;        // x devient 7 (équivalent à x = x + 1)

// Décrémentation (soustraire 1)
x--;        // x devient 6 (équivalent à x = x - 1)
--x;        // x devient 5 (équivalent à x = x - 1)

Préfixe vs Suffixe

Il y a une différence subtile entre ++x (préfixe) et x++ (suffixe) :

Préfixe (++x) : Incrémente d'abord, puis utilise la valeur
Suffixe (x++) : Utilise d'abord la valeur, puis incrémente

int a = 5;
int b = ++a;  // a devient 6, puis b = 6
// Résultat : a = 6, b = 6

int c = 5;
int d = c++;  // d = 5, puis c devient 6
// Résultat : c = 6, d = 5

🔀 Opérateurs d'assignation composés

Java offre des opérateurs d'assignation composés pour simplifier certaines opérations :

Opérateur Équivalent Description Exemple
+= x = x + y Addition puis assignation x += 5;
-= x = x - y Soustraction puis assignation x -= 3;
*= x = x * y Multiplication puis assignation x *= 2;
/= x = x / y Division puis assignation x /= 4;
%= x = x % y Modulo puis assignation x %= 5;
Exemples d'utilisation :
int x = 10;

x += 5;   // Équivalent à x = x + 5;  → x = 15
x -= 3;   // Équivalent à x = x - 3;  → x = 12
x *= 2;   // Équivalent à x = x * 2;  → x = 24
x /= 4;   // Équivalent à x = x / 4;  → x = 6
x %= 5;   // Équivalent à x = x % 5;  → x = 1

📊 Priorité des opérateurs

Les opérateurs ont une priorité d'exécution. Voici l'ordre de priorité (du plus prioritaire au moins prioritaire) :

  1. Parentheses () : Toujours évaluées en premier
  2. Multiplication, Division, Modulo *, /, %
  3. Addition, Soustraction +, -
Exemples de priorité :
int resultat1 = 2 + 3 * 4;      // 14 (pas 20) : 3*4 d'abord, puis +2
int resultat2 = (2 + 3) * 4;   // 20 : parenthèses d'abord
int resultat3 = 10 / 2 + 3;    // 8 : 10/2 d'abord, puis +3
int resultat4 = 10 / (2 + 3);   // 2 : parenthèses d'abord
Conseil : Utilisez des parenthèses pour clarifier vos calculs, même si elles ne sont pas strictement nécessaires. Cela rend votre code plus lisible et évite les erreurs.

💡 Points clés à retenir

  • OpĂ©rateurs de base : +, -, *, /, %
  • Division entière : Avec int, la partie dĂ©cimale est tronquĂ©e
  • Division dĂ©cimale : Utilisez double ou float pour obtenir des dĂ©cimales
  • Modulo : Retourne le reste de la division
  • IncrĂ©mentation : ++x ou x++ (ajoute 1)
  • DĂ©crĂ©mentation : --x ou x-- (soustrait 1)
  • Assignation composĂ©e : +=, -=, *=, /=, %=
  • PrioritĂ© : Parenthèses → * / % → + -
Conseil pratique : Pratiquez avec différents calculs pour vous familiariser avec les opérateurs. Essayez de créer des programmes qui effectuent des calculs simples (calculatrice, conversions, etc.).

2.2.2 – Opérateurs logiques et de comparaison

Les opérateurs de comparaison permettent de comparer des valeurs, et les opérateurs logiques permettent de combiner plusieurs conditions. Ces opérateurs sont essentiels pour créer des programmes qui prennent des décisions basées sur des conditions.

🔍 Opérateurs de comparaison

Les opérateurs de comparaison comparent deux valeurs et retournent un booléen (true ou false) :

Opérateur Symbole Description Exemple Résultat
Égal à == Vérifie si deux valeurs sont égales 5 == 5 true
Différent de != Vérifie si deux valeurs sont différentes 5 != 3 true
Plus grand que > Vérifie si la première valeur est plus grande 10 > 5 true
Plus petit que < Vérifie si la première valeur est plus petite 3 < 7 true
Plus grand ou égal >= Vérifie si la première valeur est plus grande ou égale 5 >= 5 true
Plus petit ou égal <= Vérifie si la première valeur est plus petite ou égale 4 <= 5 true
Important :
  • == compare les valeurs (ne confondez pas avec = qui est l'assignation)
  • Pour les String, utilisez .equals() plutĂ´t que == (nous verrons cela plus tard)

📝 Exemples d'utilisation

Exemples de comparaisons :
int a = 10;
int b = 5;

boolean egal = (a == b);        // false
boolean different = (a != b);   // true
boolean plusGrand = (a > b);    // true
boolean plusPetit = (a < b);    // false
boolean plusGrandOuEgal = (a >= b);  // true
boolean plusPetitOuEgal = (a <= b);  // false

🔗 Opérateurs logiques

Les opérateurs logiques permettent de combiner plusieurs conditions :

Opérateur Symbole Description Exemple Résultat
ET logique && Retourne true si les deux conditions sont vraies true && true true
OU logique || Retourne true si au moins une condition est vraie true || false true
NON logique ! Inverse la valeur booléenne !true false

Table de vérité pour && (ET)

A B A && B
true true true
true false false
false true false
false false false

Table de vérité pour || (OU)

A B A || B
true true true
true false true
false true true
false false false

📝 Exemples d'utilisation des opérateurs logiques

Exemples pratiques :
int age = 20;
boolean estMajeur = (age >= 18);  // true

int note = 15;
boolean estValide = (note >= 0 && note <= 20);  // true (note entre 0 et 20)

int temperature = 25;
boolean estConfortable = (temperature >= 20 && temperature <= 26);  // true

// OU logique
boolean estWeekend = true;
boolean estVacances = false;
boolean peutDormir = (estWeekend || estVacances);  // true

// NON logique
boolean estFerme = false;
boolean estOuvert = !estFerme;  // true

⚡ Évaluation court-circuit (Short-circuit evaluation)

Java utilise l'évaluation court-circuit pour les opérateurs && et || :

  • Avec && : Si la première condition est false, la seconde n'est pas Ă©valuĂ©e
  • Avec || : Si la première condition est true, la seconde n'est pas Ă©valuĂ©e
Exemple d'évaluation court-circuit :
int x = 5;

// Avec && : si la première condition est false, la seconde n'est pas évaluée
if (x > 10 && x < 20) {
    // x > 10 est false, donc x < 20 n'est même pas vérifié
}

// Avec || : si la première condition est true, la seconde n'est pas évaluée
if (x < 10 || x > 20) {
    // x < 10 est true, donc x > 20 n'est même pas vérifié
}

🔀 Opérateurs bitwise (optionnel, avancé)

Java offre également des opérateurs bitwise pour les opérations au niveau des bits. Ces opérateurs sont moins utilisés pour débuter :

  • & : ET bitwise
  • | : OU bitwise
  • ^ : XOR bitwise
  • ~ : NON bitwise
  • << : DĂ©calage Ă  gauche
  • >> : DĂ©calage Ă  droite
Note : Les opérateurs bitwise sont des concepts avancés. Pour débuter, concentrez-vous sur les opérateurs logiques &&, || et !.

💡 Points clés à retenir

  • OpĂ©rateurs de comparaison : ==, !=, >, <, >=, <=
  • Retournent des boolĂ©ens : Tous les opĂ©rateurs de comparaison retournent true ou false
  • ET logique : && (les deux conditions doivent ĂŞtre vraies)
  • OU logique : || (au moins une condition doit ĂŞtre vraie)
  • NON logique : ! (inverse la valeur boolĂ©enne)
  • Évaluation court-circuit : Java optimise l'Ă©valuation des conditions
  • Attention : == compare, = assigne (ne confondez pas !)
Conseil pratique : Les opérateurs de comparaison et logiques sont essentiels pour créer des conditions (if/else) et des boucles. Dans le prochain chapitre, nous verrons comment utiliser ces opérateurs dans des structures de contrôle pour créer des programmes qui prennent des décisions.