Zurück zu: Java Tutorial
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
unddefault
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“.