Java プログラミングでは、switch-case ステートメントは、変数の値に基づいて、多数のコード ブロックの中から 1 つのコード ブロックを実行するために使用される制御構造です。複数の if-else ステートメントを使用するよりも効率的で読みやすくなります。 switch-case ステートメントを使用するときに理解しておくべき重要な概念の 1 つは、「フォールスルー」です。
フォールスルーは、break ステートメントに遭遇することなくコードの実行が 1 つのケースから次のケースに継続される場合に発生します。デフォルトでは、一致する case ブロックが実行された後、break ステートメントが見つかるか switch ステートメントが終了するまで、制御フローは後続の case ブロックに移行します。
Java の switch-case ステートメントの基本構文は次のとおりです。
switch (expression) { case value1: // code block break; case value2: // code block break; default: // default code block }
フォールスルーがどのように機能するかを理解するために例を見てみましょう:
int day = 2; switch (day) { case 1: System.out.println("Monday"); case 2: System.out.println("Tuesday"); case 3: System.out.println("Wednesday"); default: System.out.println("Other day"); }
この例では、出力は次のようになります:
Tuesday Wednesday Other day
日が 2 の場合、ケース 2 のブロックが実行され、「火曜日」が出力されます。ケース 2 の後には Break ステートメントがないため、実行はケース 3 に続き、次にデフォルトのケースに進み、それぞれ「水曜日」と「その他の日」が出力されます。これは、フォールスルー動作の典型的な例です。
フォールスルーを防ぐには、各ケースを Break ステートメントで終了する必要があります。
int day = 2; switch (day) { case 1: System.out.println("Monday"); break; case 2: System.out.println("Tuesday"); break; case 3: System.out.println("Wednesday"); break; default: System.out.println("Other day"); break; }
これで、出力は次のようになります:
Tuesday
場合によっては、フォールスルーを意図的に使用して、同じコード ブロックで複数のケースを実行することができます。
int day = 2; switch (day) { case 1: case 2: case 3: case 4: case 5: System.out.println("It's a weekday"); break; case 6: case 7: System.out.println("It's a weekend"); break; default: System.out.println("Invalid day"); }
この例では、曜日の値 1 ~ 5 はすべて「平日です」と表示されます。
switch-case ステートメントのフォールスルーを理解することは、明確でバグのない Java コードを作成するために重要です。フォールスルーは特定のシナリオでは便利ですが、一般的には、意図しない動作を防ぐために Break ステートメントを使用することをお勧めします。
注: Java とは異なり、Ruby の case-when 構造はフォールスルー動作を示しません。各 when 句は独立しており、明示的な指示がない限り、実行は自動的に後続の when 句に続行されません。
以上がJava Switch-Case ステートメントのフォールスルーについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。