ordrePriorite - 420111aut25/cours420111 GitHub Wiki


🧭 Ordre de priorité des opérations en Java

En Java, comme en mathématiques, certaines opérations sont effectuées avant d’autres. C’est ce qu’on appelle la priorité des opérateurs.


🪜 Diagramme de priorité (du plus fort au plus faible)

╔════════════════════════════════════╗
║ ()                                 ║ ➤ Parenthèses : forcent la priorité
╠════════════════════════════════════╣
║ ++  --  !  +  -                    ║ ➤ Incrément, décrément, NON logique, plus/moins 
╠════════════════════════════════════╣
║ *   /   %                          ║ ➤ Multiplication, division, modulo
╠════════════════════════════════════╣
║ +   -                              ║ ➤ Addition, soustraction
╠════════════════════════════════════╣
║ <   <=  >   >=                     ║ ➤ Comparaisons
╠════════════════════════════════════╣
║ ==  !=                             ║ ➤ Égalité / inégalité
╠════════════════════════════════════╣
║ &&                                 ║ ➤ ET logique (et court-circuité)
╠════════════════════════════════════╣
║ \|\|                               ║ ➤ OU logique (et court-circuité)
╠════════════════════════════════════╣
║ =  +=  -=  *=  /=  %=              ║ ➤ Affectations simples et composées
╚════════════════════════════════════╝

🎓 Exemple d’analyse : sans parenthèses

boolean resultat = 4 + 2 * 3 > 10 || !false;

🔍 Étapes d’évaluation :

  1. 2 * 36
  2. 4 + 610
  3. 10 > 10false
  4. !falsetrue
  5. false || truetrue

✅ Résultat final : true


🧪 À retenir

  • Java suit un ordre strict de priorité, mais ne lit pas toujours de gauche à droite.
  • Les opérateurs comme *, /, % sont évalués avant les + et -.
  • Les opérateurs logiques && et \|\| viennent après les comparateurs (<, >, ==, etc.).
  • L’opérateur ! (NON logique) a une priorité très élevée, il est évalué rapidement.
  • Les affectations (=, +=, etc.) sont toujours faites en dernier.

🧩 Exemple 1 : Opérations arithmétiques + comparaisons + logique

boolean res1 = 10 + 2 * 5 < 30 && (4 + 3 * 2 == 10 || false);

✳️ Étapes d’évaluation :

  1. Multiplications : 2 * 510 3 * 26

  2. Additions : 10 + 1020 4 + 610

  3. Comparaisons : 20 < 30true 10 == 10true

  4. OU logique : true || falsetrue

  5. ET logique : true && truetrue

✅ Résultat final :

res1 = true;

🧠 Exemple 2 : Avec modulos, NON logique, ET / OU

boolean res2 = !(15 % 4 == 3) || (8 / 2 + 1 > 4 && true);

✳️ Étapes d’évaluation :

  1. Modulo : 15 % 43

  2. Comparaison : 3 == 3true

  3. NON logique : !(true)false

  4. Division & addition : 8 / 24 4 + 15

  5. Comparaison : 5 > 4true

  6. ET logique : true && truetrue

  7. OU logique : false || truetrue

✅ Résultat final :

res2 = true;

💡 Astuce

Même si Java respecte cet ordre, écrire avec des parenthèses explicites améliore grandement la lisibilité et réduit les erreurs :

boolean res2 = (!(15 % 4 == 3)) || ((8 / 2 + 1 > 4) && true);

🟢 Exercice 1 – Simple priorité arithmétique + logique

boolean ex1 = 5 + 3 * 2 > 10 && !false;

✏️ Question : Que vaut ex1 ? Explique étape par étape comme dans les exemples.


🟡 Exercice 2 – Parenthèses et inversion logique

boolean ex2 = !(6 + 4 / 2 <= 7) || false;

🟠 Exercice 3 – Comparaisons croisées et OU logique

boolean ex3 = 3 * 3 == 9 || 8 - 3 > 10 && true;

✏️ Attention : l’opérateur && est plus prioritaire que ||. Analyse bien.


🔴 Exercice 4 – Plusieurs niveaux de priorité + modulo

boolean ex4 = 18 % 5 + 1 == 4 && !(2 * 2 >= 5);

🔍 À toi de jouer ! Résous-le à la main (ou à tête).


🔴 Exercice 5 – Affectation + expressions mixtes

boolean ex5;
ex5 = (10 - 2 * 3 != 4) || (6 / 3 == 2 && false);

🔍 À toi de jouer ! Résous-le à la main (ou à tête).


Exercice 6

boolean mystere = !(7 + 1 == 8) && (5 * 2 < 11 || false);

🔍 À toi de jouer ! Résous-le à la main (ou à tête).


⚠️ **GitHub.com Fallback** ⚠️