Overview
Java lebt und entwickelt sich unaufhörlich weiter. Das zeigt sich gerade auch bei der Syntax zum switchCase-Mechanismis, wo wir seit Version 12 ein nices Syntax-Cleanup erhalten haben. Wie das aussieht, siehst du hier.
Sehen wir uns direkt mal ein Beispiel für switchCase in Java an, wie es vor der Version 12 üblich war:
int n = 1;
String farbe = "";
switch(n){
case 0:
case 1:
farbe = "grün";
break;
case 2:
case 3:
farbe = "rot";
break;
default:
farbe = "keine Farbe";
}
System.out.println(farbe); // grün
Diese Syntax, die du sicher gut kennst, wurde der Programmiersprache C entlehnt und wirkte schon immer ziemlich sperrig: Mehrere Fälle müssen durch mehrere cases ausgedrückt werden und wir müssen umständich mit break arbeiten (sonst flutscht die Hälfte durch). Das alles war eine Einladung für Bugs.
Harter Stoff, oder?
Sehen wir uns also jetzt den switchCase-Mechanismus von oben in der cleaneren Syntax in Java 12+ an:
int n = 1;
String farbe = "";
switch(n){
case 0,1 -> farbe = "grün";
case 2,3 -> farbe = "rot";
default -> farbe = "keine Farbe";
}
System.out.println(farbe); // grün
Die Vorteile sind sofort klar:
Dadurch wirkt der Code übersichtich und viel verständlicher.
Tatsächlich können wir die switchCase Expression noch kompakter bauen, und zwar dann, wenn sie benutzt wird, um einen Wert zuzuweisen:
int n = 1;
String farbe = switch(n){
case 0,1 -> "grün";
case 2,3 -> "rot";
default -> "keine Farbe";
};
System.out.println(farbe); // grün
Vergiss auf keinen Fall das Semikolon am Ende des Gesamtausdrucks.
Wenn du für einen Fall-Eintritt nur eine Anweisung ausführen möchtest, benötigst du keine geschweiften Klammern. So machen wir es in unseren Beispielen oben.
Sind es allerdings mehrere Anweisungen, die ausgeführt werden sollen, dann sind die geschweiften Klammern Pflicht:
int n = 1;
String farbe = "";
switch(n){
case 0,1 -> {farbe = "grün"; System.out.println("Alles grün?");} // Mehrere Anweisungen
case 2,3 -> farbe = "rot";
default -> farbe = "keine Farbe";
};
System.out.println(farbe); // grün
Java Basics
[Java einrichten] [Variablen] [Primitive Datentypen] [Operatoren] [if else] [switch-case] [Arrays] [Schleifen]
Objektorientierung
[Einstieg] [Variablen ] [Konstruktor] [Methoden] [Rekursion] [Statische Member] [Initializer] [Pass-by-value] [Objektsammlungen] [Objektinteraktion] [Objekte löschen]
Klassenbibliothek
[Allgemeines] [String ] [Math] [Wrapper] [Scanner] [java.util.Arrays] [Date-Time-API]