2017-07-13 4 views
2

Ich sah diesen Code in der OCA Java 8 Exam Study Guide, die mich verwirrt.Wie Schalter funktioniert, wenn ein Fall nicht ausgewählt wurde

int dayOfWeek = 5; 
switch(dayOfWeek) { 
    case 0: 
    System.out.println("Sunday"); 
    default: 
    System.out.println("Weekday"); 
    case 6: 
    System.out.println("Saturday"); 
    break; 
} 

Das Buch sagt, es druckt Wochentag und Samstag.

Warum ist das?

Ich dachte, der Fall musste gefunden werden, um ausgewählt zu werden, da es 5 ist, ist nicht ausgewählt, also sollte nichts passieren.

+2

Weil es eine 'default'-Klausel gibt. – luizfzs

+2

Wenn Sie keine Pause machen, wird es nacheinander alle folgenden Fälle fortgesetzt und auch der Hinweis @luizfzs sagte – Pooya

Antwort

2

Da kein Fall entspricht Wert von dayOfWeek, die Standard Fall ausgeführt wird: Drucken "Weekday"

Da die Standard Fall hat keine break, der nächste Fall, dass es folgt, wird auch ausgeführt, bis er Ende erreicht von Schalter oder Pause: Drucken "Saturday"

+0

Verzeihen Sie mein Missverständnis, aber wenn kein Fall übereinstimmt, wird Standard immer ausgeführt? Nach der Ausführung der Standardausführung würde es alle anderen Fälle ausführen, weil es keine Unterbrechung gibt? – Jinzu

+0

Ja, es wird so sequentiell gemacht. Wenn der Standardwert der letzte Fall ist, wird kein anderer Fall ausgeführt. –

0

Sie können die Fälle erwähnen, für die Sie explizit etwas tun möchten. Ansonsten werden sie für alle übrigen Fälle in default behandelt.

Überprüfen Sie auch die verwandten Must the "default" case come last in a switch? für weitere Erläuterungen.

Und wie andere auch hier gezeigt haben, wenn Sie keine Pause machen, dann wird es auch alle anderen Fälle durchlaufen, bis es auf break trifft.

1

Einfach: weil Sie durch Fälle "fallen". Wenn Sie nicht durchfallen wollen, müssen Sie break verwenden.

Der Standard ist wirklich, dass Sie alle Fälle nach der ersten Übereinstimmung ausführen - bis Sie die erste break Aussage treffen.

+0

Ausgezeichnete Verwendung der richtigen Terminologie. – msanford

+1

Wenn wir ultra-präzise sein wollen, ist es "führe alle Anweisungen nach der übereinstimmenden Fallbezeichnung aus, bis du die erste Aussage getroffen hast, die abrupt endet" - es muss keine "Pause" sein, könnte es sein ein 'return', ein expliziter' throw' oder etwas, bei dem eine Ausnahme ausgelöst wird. –

Verwandte Themen