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 句に続行されません。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3