2017-05-24 4 views
0

Könnten Sie mich bitte wissen lassen, warum wir switch-case-Anweisung in Java benötigen, wenn wir bereits if-else if-else haben Aussagen.Warum brauchen wir switch-case-Anweisungen in Java, wenn wir bereits if-else if-else-Anweisungen haben

Gibt es Leistungsvorteile für Switch-Case-Anweisungen?

+0

Sie sind ziemlich verschiedene Dinge, wenn Sie darüber nachdenken. (Spoileralarm: intern gibt es sogar zwei verschiedene Switch-Case-Konstrukte in der JVM.) – biziclop

+0

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? –

+0

Warum können wir Zahlen multiplizieren, wenn wir bereits eine Addition haben, die dasselbe tun kann? – csmckelvey

Antwort

1

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.

+0

Aber wenn -andere kompliziertere Bedingungen zulässt, so ist der Fall-Through nicht viel von Vorteil. – Kayaman

+0

@Kayaman aber die resultierende Lesbarkeit ist viel besser mit einem Schalter –

+0

Hängt viel davon ab, was Sie tun. – Kayaman

Verwandte Themen