switch

0

switch-Anweisung

Anstatt viele if..else Anweisungen zu schreiben, kannst Du die switch Anweisung verwenden. Du hattest vorher bei if..else schon gesehen, dass Du bei mehreren Bedingungen etwas mehr schreiben musst. Hier soll es nun einfacher werden.

Die switch Anweisung wählt einen von vielen auszuführenden Codeblöcken aus:

Syntax

switch(Ausdruck) {
  case x:
    // code block
    break;
  case y:
    // code block
    break;
  default:
    // code block
}

Und so funktioniert es:

  • Der Switch Ausdruck wird einmal ausgewertet.
  • Der Wert des Ausdrucks wird mit den Werten jedes Falls verglichen.
  • Bei einer Übereinstimmung wird der zugehörige Codeblock ausgeführt.
  • Die Schlüsselwörter break und default sind optional und werden später in diesem Kapitel beschrieben.

Das folgende Beispiel verwendet die Wochentagsnummer, um den Wochentagsnamen zu berechnen:

Beispiel einfaches switch-case

int Tag = 4; // Stell Dir vor, der Benutzer gibt den Wert irgendwie ein
switch (Tag) {
  case 1:
    System.out.println("Montag");
    break;
  case 2:
    System.out.println("Dienstag");
    break;
  case 3:
    System.out.println("Mittwoch");
    break;
  case 4:
    System.out.println("Donnerstag");
    break;
  case 5:
    System.out.println("Freitag");
    break;
  case 6:
    System.out.println("Samstag");
    break;
  case 7:
    System.out.println("Sonntag");
    break;
}
// Ausgänge "Donnerstag" (Tag 4)

Probier es aus im Online Compiler!

Hier im Beispiel es offensichtlich, dass der Codeblock bei case 4 ausgeführt wird. Wenn die Variable Tag aber nicht so offensichtlich vorher mit einem Wert belegt wird, sondern zum Beispiel durch den Nutzer eingegeben wird, dann wird es schon spannender für die Ausführung.

Ausdruck im switch

Direkt nach dem switch musst Du in der Klammer einen Ausdruck schreiben. Es sind dort bestimmte Datentypen erlaubt, und zwar die folgenden:

  • primitive Datentypen: char, byte, short, int
  • Wrapper-Klassen Character, Byte, Short, Integer
  • Enum-Datentypen
  • String (kam mit Java 7 als Möglichkeit hinzu)

In den jeweiligen Case-Abschnitten muss dann der Datentyp zu dem passen, was im switch-Ausdruck steht. Wenn Du also im switch-Ausdruck eine Variable vom Datentyp byte aufschreibst, dürfen bei den Cases auch nur Werte von -128 bis 127 aufgeführt werden. Ansonsten passt es nicht zusammen und das Switch wird nicht richtig funktionieren.

Das Schlüsselwort break


Wenn Java ein Schlüsselwort break erreicht, bricht es aus dem Switch-Block aus.

Dadurch wird die Ausführung von weiterem Code und die Prüfung von Fällen innerhalb des Blocks gestoppt.

Wenn eine Übereinstimmung gefunden wird und die Aufgabe erledigt ist, ist es Zeit für eine Unterbrechung. Weitere Tests sind nicht erforderlich.

Eine Unterbrechung kann viel Ausführungszeit sparen, da sie die Ausführung des gesamten restlichen Codes im Switch-Block „ignoriert“.

Nach oben scrollen