W3docs

Java break-Anweisung

Schleifen und switch-Blöcke in Java vorzeitig beenden mit break, einschließlich des beschrifteten break.

break ist der Notausgang. Es stoppt sofort die innerste Schleife oder den switch-Block, in dem es sich befindet, und die Ausführung wird mit dem fortgesetzt, was danach folgt. Verwende es, wenn die Arbeit der Schleife erledigt ist und es keinen Grund gibt, weiter zu iterieren.

Eine Schleife verlassen

for (int i = 0; i < 100; i++) {
  if (i == 5) {
    break;
  }
  System.out.println(i);
}
// continues here

Gibt 0 1 2 3 4 aus und beendet die Ausführung. Die Bedingung der Schleife (i < 100) und das Update (i++) werden in dem Moment aufgegeben, in dem break ausgeführt wird.

Ein typischer Anwendungsfall: Suche nach einem Element und stoppe, sobald du es gefunden hast:

int[] nums = {3, 7, 2, 8, 5};
int target = 8;
int foundAt = -1;

for (int i = 0; i < nums.length; i++) {
  if (nums[i] == target) {
    foundAt = i;
    break;
  }
}
System.out.println("found at index: " + foundAt);

Ohne break würdest du weiterhin Elemente prüfen, von denen du bereits weißt, dass sie nicht die Antwort sind.

break in einer while-Schleife

Funktioniert identisch in while- und do/while-Schleifen:

int n = 1;
while (true) {
  if (n > 1000) {
    break;
  }
  n *= 2;
}
System.out.println(n);   // 1024

while (true) { ... break; } ist das Standardmuster für „Schleife bis zu einer Bedingung, die innerhalb des Rumpfs ermittelt wird."

break in einem switch

In einer herkömmlichen switch-Anweisung beendet break den switch — und verhindert so den Fall-through zum nächsten case. Das hast du im switch-Kapitel gesehen:

switch (cmd) {
  case "start": startServer(); break;
  case "stop":  stopServer();  break;
  default:      help();        break;
}

Die Pfeilform von switch-Ausdrücken, die in switch expressions behandelt wird, hat keinen Fall-through und benötigt daher kein break.

Warnung

Ein switch innerhalb einer Schleife ist eine klassische Falle: Ein break, das für die Schleife gedacht ist, verlässt tatsächlich den switch und lässt die Schleife weiterlaufen. break zielt immer auf die innerste Schleife oder den switch, je nachdem, welcher es am engsten einschließt.

for (String cmd : commands) {
  switch (cmd) {
    case "quit":
      break;          // exits the switch, NOT the for loop — the loop keeps going
    default:
      process(cmd);
  }
}

Um die Schleife von innerhalb des switch zu verlassen, benötigst du ein beschriftetes break (unten gezeigt) oder ein Flag, das die Schleife anschließend prüft.

break verlässt nur eine Ebene

break verlässt die innerste einschließende Schleife oder den switch. In verschachtelten Schleifen verlässt es nur die innere:

for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 3; j++) {
    if (j == 1) break;     // only exits the inner loop
    System.out.println(i + "," + j);
  }
}

Ausgabe:

0,0
1,0
2,0

Um alle verschachtelten Schleifen auf einmal zu verlassen, verwende ein beschriftetes break — behandelt in labeled statements:

outer:
for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 3; j++) {
    if (i == 1 && j == 1) break outer;
    System.out.println(i + "," + j);
  }
}

break vs. return

Wenn die Arbeit nach der Schleife bedeutend ist, verwende break. Wenn die Methode nach dem Ende der Schleife nichts mehr zu tun hat, gib direkt mit return zurück:

for (int i = 0; i < nums.length; i++) {
  if (nums[i] == target) {
    return i;       // shorter than break + return after the loop
  }
}
return -1;

Beide sind korrekt. return ist oft die sauberere Wahl für suchorientierte Methoden.

Ein ausgearbeitetes Beispiel

java— editable, runs on the server

Wie geht es weiter

break beendet die Schleife vollständig. Um nur die aktuelle Iteration zu überspringen und mit der nächsten fortzufahren, verwende continue.

Übungen

Übung
Innerhalb einer verschachtelten for-Schleife bewirkt eine einfache break-Anweisung...
Innerhalb einer verschachtelten for-Schleife bewirkt eine einfache break-Anweisung...
Was this page helpful?