switch Schlüsselwort in Java
Das Schlüsselwort switch
wird in Java verwendet, um einen Codeblock unter vielen Alternativen auszuführen. Es handelt sich um eine Steueranweisung, mit der die Variable auf Gleichheit mit einer Liste von Werten geprüft werden kann, die jeweils einen eigenen Codeblock enthalten.
Verwendung
Die Anweisung switch
bietet einen saubereren und lesbareren Weg, um mehrere bedingte Verzweigungen zu handhaben, als die Verwendung mehrerer if-else
Anweisungen.
Syntax
switch (expression) {
case value1:
// code block
break;
case value2:
// code block
break;
// more cases...
default:
// default code block
}
expression
: Die Variable oder der Ausdruck, dessen Wert mit den Fallwerten verglichen wird.case value
: Ein konstanter Wert, mit dem der Ausdruck verglichen wird. Wenn sie übereinstimmen, wird der entsprechende Codeblock ausgeführt.break
: Beendet die Anweisungswitch
und verhindert ein Durchfallen.default
: Wird ausgeführt, wenn kein Fallwert mit dem Ausdruck übereinstimmt.
Beispiele
Beispiel 1: Grundlegende Verwendung
public class SwitchExample {
public static void main(String[] args) {
int day = 3;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("Invalid day");
}
}
}
In diesem Beispiel wird die Variable day
mit den Fallwerten verglichen. Da day
3 ist, lautet die Ausgabe "Mittwoch".
Beispiel 2: Strings verwenden
public class SwitchStringExample {
public static void main(String[] args) {
String fruit = "Apple";
switch (fruit) {
case "Apple":
System.out.println("Fruit is Apple");
break;
case "Banana":
System.out.println("Fruit is Banana");
break;
case "Cherry":
System.out.println("Fruit is Cherry");
break;
default:
System.out.println("Unknown fruit");
}
}
}
Dieses Beispiel zeigt, wie du eine switch
Anweisung mit String
Werten verwenden kannst. Da fruit
"Apfel" ist, lautet die Ausgabe "Frucht ist Apfel".
Beispiel 3: Fall-Through-Verhalten
public class SwitchFallThroughExample {
public static void main(String[] args) {
int num = 2;
switch (num) {
case 1:
System.out.println("One");
case 2:
System.out.println("Two");
case 3:
System.out.println("Three");
break;
default:
System.out.println("Default case");
}
}
}
In diesem Beispiel führt das Fehlen der break
Anweisungen zu einem Durchfallverhalten. Da num
gleich 2 ist, wird die Ausgabe sein:
Two
Three
Default case
Tipps und bewährte Praktiken
- Verwende
break
Anweisungen: Verwende immerbreak
Anweisungen, um ein Durchfallen zu verhindern, es sei denn, dies ist ausdrücklich gewünscht. - Standardfall: Füge einen
default
Fall ein, um unerwartete Werte zu behandeln. - Konstante Werte: Achte darauf, dass Fallwerte Konstanten oder Literale sind.
- Typ Kompatibilität: Der Ausdruck
switch
kann vom Typbyte
,short
,char
,int
,String
oder ein Enum-Typ sein. Stelle sicher, dass die Groß- und Kleinschreibung mit dem Typ des Ausdrucks kompatibel ist. - Lesbarer Code: Verwende
switch
Anweisungen, um deinen Code lesbarer und wartbarer zu machen im Vergleich zu mehrerenif-else
Anweisungen. - Java 12 Erweiterungen: Ab Java 12 kannst du Switch-Ausdrücke verwenden, um Werte direkt aus Cases zurückzugeben, was die Syntax vereinfacht und die Lesbarkeit des Codes verbessert.
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class SwitchEnumExample {
public static void main(String[] args) {
Day day = Day.WEDNESDAY;
switch (day) {
case MONDAY:
System.out.println("Monday");
break;
case TUESDAY:
System.out.println("Tuesday");
break;
case WEDNESDAY:
System.out.println("Wednesday");
break;
case THURSDAY:
System.out.println("Thursday");
break;
case FRIDAY:
System.out.println("Friday");
break;
case SATURDAY:
System.out.println("Saturday");
break;
case SUNDAY:
System.out.println("Sunday");
break;
}
}
}
Die Verwendung von Enums in switch
Anweisungen kann die Lesbarkeit des Codes und die Typsicherheit verbessern.