bepaalt de volgorde waarin instructies worden uitgevoerd. Java biedt conditionele statements (, ), loops (, , ), en branching statements (, , ) — plus moderne verbeteringen zoals switch expressions.
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";
}
De klassieke switch vereist break na elk geval — als je dit vergeet, ontstaat fall-through (uitvoering gaat door naar het volgende geval), een beruchte bugbron.
// 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";
};
De moderne switch expression elimineert fall-through, kan een waarde retourneren, en is schoner — de voorkeur in nieuwe 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 beëindigt een loop, continue springt naar de volgende iteratie, return beëindigt de methode, en gelabelde breaks kunnen nested loops in één keer verlaten.
Control flow is het basismechanisme voor het uitdrukken van logica en beslissingen in elk programma — elke niet-triviale methode gebruikt het.
Het is essentieel om de constructies en hun nuances te begrijpen: de switch fall-through gotcha (en de veiliger moderne switch expression), het verschil tussen while en do-while (minstens één keer uitvoeren), de for-each voor schone collection-iteratie, en de branching statements (inclusief gelabelde breaks voor nested loops).
Beheersing hiervan — en voorkeur voor moderne, minder foutgevoelige vormen (switch expressions, for-each) — is fundamenteel voor het schrijven van correcte, leesbare Java-logica en het voorkomen van veelvoorkomende control-flow-bugs.