Switch-Anweisungen vereinfachen lange Listen von if else-Blöcken und verbessern die Lesbarkeit. Außerdem ermöglichen sie Fallfälle.
Beachten Sie Folgendes:
String str = "cat"
switch(str){
case "cat":
System.out.println("meow");
break;
case "dog":
System.out.println("woof");
break;
case "horse":
case "zebra": //fall through
System.out.println("neigh");
break;
case "lion":
case "tiger":
case "bear":
System.out.println("oh my!");
break;
case "bee":
System.out.print("buzz ");
case "fly":
System.out.println("buzz"); //fly will say "buzz" and bee will say "buzz buzz"
break;
default:
System.out.println("animal noise");
}
können nun versuchen, es zu schreiben, als ob-elses
String str = "cat"
if(str.equals("cat")){
System.out.println("meow");
}
else if(str.equals("dog")){
System.out.println("woof");
}
else if(str.equals("horse") || str.equals("zebra")){
System.out.println("neigh");
} else if...
Sie erhalten den Punkt. Vorallem wo der Schalter leuchtet ist mit den bee
und fly
. Die Logik dort wäre schwer zu erfassen, vor allem wenn sie mehr als nur eine Print-Aussage teilen.
Sie sind ziemlich verschiedene Dinge, wenn Sie darüber nachdenken. (Spoileralarm: intern gibt es sogar zwei verschiedene Switch-Case-Konstrukte in der JVM.) – biziclop
Was ist daran falsch, beides zu haben? Was ist falsch daran, vier Schleifenkonstrukte zu haben? Was ist daran falsch, viele verschiedene Zuweisungsoperatoren zu haben? Was ist falsch daran, sowohl lambdas als auch anonyme Klassen zu haben? NICHTS. Welche Computersprachen kennen Sie, bieten Sie verschiedene Möglichkeiten, einen Algorithmus aus Gründen der Übersichtlichkeit und Wartungsfreundlichkeit auszudrücken? –
Warum können wir Zahlen multiplizieren, wenn wir bereits eine Addition haben, die dasselbe tun kann? – csmckelvey