2017-07-13 2 views
2

このコードは、私を混乱させるOCA Java 8試験の学習ガイドで見ました。ケースが選択されていないときの切り替え方法

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

本書には、平日と土曜日が印刷されています。

これはなぜですか?

5が選択されていないため、選択されていなければならないと考えられたので、何も起こりません。ない場合として

+2

'default'節があるためです。 – luizfzs

+2

あなたが休憩を入れないと、それは次のすべてのケースを順番に続けます。また、@luizfzsのメモによると、 – Pooya

答えて

2

デフォルト場合が実行され、dayOfWeekの値に一致する:印刷"Weekday"

デフォルト場合にはbreak、それが終わりに達するまで、それはまた、実行される次の次のケースを有していないようスイッチまたはブレークの表示:印刷"Saturday"

+0

私の誤解を許してください。だから、デフォルトを実行した後、休憩がないので、残りのすべてのケースを行うでしょうか? – Jinzu

+0

はい、それは順番にそれを行います。 defaultが最後の場合、それ以外のケースは実行されません。 –

0

明示的に何かしたい場合があります。 それ以外の場合は、defaultで処理されます。

さらに、関連するMust the "default" case come last in a switch?を確認してください。

また、他の人も指摘しているように、ブレークしないと、残っているすべてのケースも、breakになるまで間違いなく実行されます。

1

シンプル:ケースを「落ちる」ためです。転倒したくない場合は、breakを使用する必要があります。

最初の一致以降のすべてのケースを実行するのが実際のデフォルトです。つまり、最初のbreakステートメントまでヒットします。

+0

正しい用語の優れた使用。 – msanford

+1

もし我々が超精密になるならば、 "突然完了する最初のステートメントを打つまで、マッチするcaseラベルの後ろにあるすべてのステートメントを実行する"です - それは 'break'である必要はありません。 'return'、明示的な' throw'、または例外をスローする何かを返します。 –

関連する問題