🔁 Javaの条件分岐: switch文の基本

switch文は、一つの変数や式の値に基づいて、処理を分岐させたい場合に非常に役立ちます。特に、分岐の数が多く、特定の値が一致するかどうかを判断したいときに、if-else if文を繰り返すよりも簡潔に記述できます。

1. 基本の書式

Java

switch (評価する変数または式) {
    case 値A:
        // 変数の値が '値A' と一致した場合の処理
        System.out.println("値Aの処理を実行");
        break; // ★ 処理を終了し、switch文から抜ける
    case 値B:
    case 値C: // 値Bと値Cが同じ処理の場合、まとめて記述できる
        // 変数の値が '値B' または '値C' と一致した場合の処理
        System.out.println("値Bまたは値Cの処理を実行");
        break;
    default:
        // どの 'case' にも一致しなかった場合の処理 (省略可能)
        System.out.println("一致する値がありませんでした");
        break;
}

2. switchで使えるデータ型

switch文で評価できる変数や式の型は限定されています。

  • Java 7以降: byte, short, char, int の整数型、そのラッパー型、Stringenum (列挙型)が使用可能です。
  • 注意点: boolean (真偽値) や float/double (浮動小数点数) は使用できません。

🛑 break文の役割(フォールスルーを防ぐ)

switch文を使う上で、最も重要なのが**break**文です。

breakの働き

break文は、一致するcaseの処理が完了したときに、switch文のブロック全体から抜けることを命令します。

フォールスルー (Fall-through)

もしbreak文を省略すると、条件に一致したcaseの処理が実行された後、次のcaseラベルの処理も続けて実行されてしまいます。この動作を「フォールスルー」と呼びます。

Java

int month = 1;

switch (month) {
    case 1:
        System.out.println("正月です");
        // breakがないため、次のcase 2の処理も実行される
    case 2:
        System.out.println("冬です"); // ← これも実行されてしまう
        break;
    default:
        System.out.println("その他の月です");
}
// 出力: 
// 正月です
// 冬です

意図的に複数のcaseで同じ処理を行いたい場合(例:上記のcase 値B:case 値C:のように)を除き、通常は各caseブロックの最後に**break**を記述する必要があります。


🎯 defaultの役割

defaultは、if文における最後のelseブロックのようなものです。

  • switch文内のどのcaseラベルの値とも一致しなかった場合に、defaultブロック内の処理が実行されます。
  • defaultは、すべてのcaseラベルの後に記述するのが一般的ですが、記述は省略可能です。

🆕 Java 14以降の新しいswitch式 (Switch Expressions)

Java 14以降では、値を返す**switch式**という新しい書き方が導入され、より安全で簡潔な記述が可能になりました。

Java

int day = 3;

// switch式は、処理の結果を直接変数に代入できる
String dayName = switch (day) {
    case 1 -> "月曜日";
    case 2 -> "火曜日";
    case 3 -> "水曜日";
    default -> "その他の曜日";
}; // セミコロンが必要

System.out.println(dayName); // 出力: 水曜日

💡 新しいswitch式のメリット

  1. breakが不要: -> (アロー演算子) を使うことで、フォールスルーが起こらず、自動的にswitch式から抜けます。
  2. 値を返せる: 結果を変数に代入できるため、記述が非常に簡潔になります。

学習初期段階では従来のswitch文 (case :break;) を学ぶことが多いですが、新しい書き方があることも知っておくと便利です。