détermine l'ordre dans lequel les instructions s'exécutent. Java fournit des conditionnels (, ), des boucles (, , ), et des instructions de branchement (, , ) — plus des améliorations modernes comme les expressions switch.
ifswitchforwhiledo-whilebreakcontinuereturnif (score >= 90) {
grade = "A";
} else if (score >= 80) {
grade = "B";
} else {
grade = "F";
}
// ternary — concise if/else for a value
String status = (age >= 18) ? "adult" : "minor";
switch (day) {
case 1: name = "Mon"; break; // ⚠️ break needed — else it FALLS THROUGH
case 2: name = "Tue"; break;
default: name = "Unknown";
}
Le switch classique nécessite un break après chaque case — l'oublier provoque un fall-through (l'exécution continue dans le case suivant), une source de bug notoire.
// arrow syntax: no fall-through, returns a value, more concise
String name = switch (day) {
case 1 -> "Mon";
case 2 -> "Tue";
case 6, 7 -> "Weekend"; // multiple labels
default -> "Unknown";
};
L'expression switch moderne élimine le fall-through, peut retourner une valeur, et est plus propre — préférée dans le nouveau code.
// for — known iteration count
for (int i = 0; i < 10; i++) { ... }
// enhanced for-each — iterate a collection/array
for (String item : items) { ... }
// while — condition checked BEFORE each iteration
while (condition) { ... }
// do-while — body runs at least ONCE (condition checked after)
do { ... } while (condition);
for (int i = 0; i < 10; i++) {
if (i == 5) break; // exit the loop entirely
if (i % 2 == 0) continue; // skip to the next iteration
}
return result; // exit the method
// labeled break — exit nested loops
outer:
for (...) {
for (...) {
if (found) break outer; // breaks BOTH loops
}
}
break quitte une boucle, continue saute à l'itération suivante, return quitte la méthode, et les breaks étiquetés peuvent quitter les boucles imbriquées à la fois.
Le flux de contrôle est le mécanisme de base pour exprimer la logique et les décisions dans tout programme — chaque méthode non triviale l'utilise.
Comprendre les construits et leurs nuances est essentiel : le piège du fall-through de switch (et l'expression switch plus sûre), la différence entre while et do-while (s'exécuter au moins une fois), le for-each pour une itération propre des collections, et les instructions de branchement (y compris les breaks étiquetés pour les boucles imbriquées).
Maîtriser ceux-ci — et préférer les formes modernes, moins sujettes aux erreurs (expressions switch, for-each) — est fondamental pour écrire une logique Java correcte et lisible et pour éviter les bugs de flux de contrôle courants.