Java switch文の書き方|case・break・defaultとif文との違いを解説

最終更新日

Schoo Java入門 初級【2026年版】

Javaのswitch文は、1つの値を複数のcaseと照らし合わせ、一致した値ごとに処理を分ける条件分岐です。メニュー番号、曜日、コマンド名のように、決まった候補から処理を選ぶ場面で使います。

この記事では、switch文の基本構文、casebreakdefaultの役割、if文との違い、Stringで分岐する書き方を初心者向けに整理します。

Schooの「Java入門 初級【2026年版】」第3回「条件分岐・論理演算子」を学んだ後の補足としても読めます。Schooを受講していない方でも、Javaの条件分岐を学び始めた段階で理解できる内容です。

Schoo コースページ:Java入門 初級【2026年版】

Javaのswitch文とは

switch文は、1つの値を複数の候補と照らし合わせ、一致した値に対応する処理を実行する条件分岐です。例えば、メニュー番号が1なら新規登録、2ならデータ検索、3なら終了という処理に向いています。

検索で「Java switch 書き方」を調べている場合は、まずswitch (値)case 候補:、処理、break;default:の並びを押さえると読みやすくなります。

点数が80以上かどうかのような範囲を調べるのではなく、「1と同じ」「2と同じ」という決め打ちの値を扱うことがポイントです。

Java switch文の基本構文

ファイル名: MainExample.java

public class MainExample {
    public static void main(String[] args) {
        int menuNumber = 2;

        switch (menuNumber) {
            case 1:
                System.out.println("新規登録");
                break;
            case 2:
                System.out.println("データ検索");
                break;
            case 3:
                System.out.println("終了");
                break;
            default:
                System.out.println("該当するメニューがありません");
        }
    }
}

実行結果

データ検索
  • switch (menuNumber):どの値と照らし合わせるかを指定する
  • case 2::値が2と一致した場合の入口を表す
  • break;:switch文の処理を抜ける
  • default::どのcaseにも一致しなかった場合の処理を書く

menuNumberの値は2なので、case 2:から処理を始めます。「データ検索」を表示し、break;でswitch文を抜けます。caseの値の後ろにはセミコロンではなくコロンを付けます。

値とbreakの有無を変えて動きを確認する

メニュー番号とbreakの有無を変更すると、一致したcaseと実行結果がすぐに更新されます。判定するためのボタンはありません。

breakの設定

表示結果

breakを外すと、一致したcaseから下にある処理が続けて実行されます。これをフォールスルーと呼びます。ツールのコード配置ではdefaultが最後にあるため、breakなしでcaseに一致すると、最後のdefaultの処理まで実行される点にも注目してください。

breakを忘れると次のcaseへ進む

ファイル名: MainExample.java

public class MainExample {
    public static void main(String[] args) {
        int menuNumber = 2;

        switch (menuNumber) {
            case 1:
                System.out.println("新規登録");
            case 2:
                System.out.println("データ検索");
            case 3:
                System.out.println("終了");
        }
    }
}

実行結果

データ検索
終了

case 2:から実行を始めても、そこでswitch文は自動的に終わりません。次のcase 3:は新しい条件判定として扱われず、その中の処理も続けて実行されます。1つだけ実行したい場合はbreak;を書きます。

defaultはどのcaseにも一致しない場合に使う

defaultはif文のelseに近い役割です。先ほどの基本コードでmenuNumberを9にすると、1・2・3のどれにも一致しないため、「該当するメニューがありません」と表示されます。

defaultは必須ではありませんが、想定外の値を受け取ったことを明確にできるため、入力値を扱う処理では用意しておくと意図が伝わりやすくなります。この記事では流れを追いやすくするため最後に書きます。

switch式に指定できるデータ型

基本的なswitch文では、次の型をswitch式に指定できます。

種類指定できる型値の例
整数・文字byteshortintchar1'A'
ラッパークラスByteShortIntegerCharacterInteger.valueOf(1)
文字列String"start"
列挙型enum決められた選択肢

ラッパークラスは、対応する基本データ型の値へ自動的に変換されて判定されます。まずは、メニュー番号ならint、コマンド名ならStringと覚えると使い分けやすいでしょう。enumは決められた選択肢を型として表す仕組みで、詳しい定義方法は列挙型を学ぶ段階で扱います。

指定できない主な型

longfloatdoublebooleanは、基本的なswitch文のswitch式には指定できません。小数の範囲や真偽値による分岐にはif文を使います。

エラー例: long型の値をswitch式に指定するとコンパイルエラーになります。

Stringの値でも分岐できる

ファイル名: MainExample.java

public class MainExample {
    public static void main(String[] args) {
        String command = "start";

        switch (command) {
            case "start":
                System.out.println("アプリを開始します");
                break;
            case "stop":
                System.out.println("アプリを停止します");
                break;
            case "help":
                System.out.println("使い方を表示します");
                break;
            default:
                System.out.println("不明なコマンドです");
        }
    }
}

実行結果

アプリを開始します

Stringを使う場合も、switch式の値とcaseの文字列が一致するかを調べます。大文字と小文字は区別されるため、"start""START"は別の値です。

Stringの値がnullの場合

commandnullのままswitch式に指定されると、caseと比較する前にNullPointerExceptionが発生します。外部から受け取る値など、nullの可能性がある場合は、switch文の前にif文で確認します。

Exception in thread "main" java.lang.NullPointerException

if・else ifとswitchの使い分け

判定したい内容向いている書き方
値の大小や範囲ifelse ifscore >= 80
複数の条件の組み合わせifelse ifage >= 18 && hasTicket
1つの値と決まった候補の一致switchメニュー番号が1・2・3

case menuNumber >= 2:のようにcaseへ条件式を書くことはできません。範囲を判定するならif文、同じ変数の決まった値を並べるならswitch文と考えます。どちらでも書ける場合は、処理の意図を読み取りやすい方を選びます。

switch文でよくある間違い

caseの後ろをセミコロンにする

case 1;ではなくcase 1:と書きます。caseの値の後ろはコロン、実行する文とbreakの後ろはセミコロンです。

breakを書き忘れる

1つのcaseだけを実行したいのにbreakを忘れると、下にあるcaseの処理まで実行されます。実行結果が複数行になった場合は、該当するcaseの末尾を確認します。

同じcaseの値を2回書く

同じswitch文の中にcase 1:を2つ書くことはできません。どちらを実行するか決められないため、重複したcaseとしてコンパイルエラーになります。

Java switch文でよくある疑問

switch文とif文はどちらを使えばよい?

1つの値が決まった候補のどれに一致するかを見るならswitch文が向いています。一方で、80点以上、3以上10未満、AかつBのように範囲や複数条件を判定する場合はif文の方が自然です。

caseを複数まとめて同じ処理にできる?

できます。たとえば12月・1月・2月をすべて「冬」と扱う場合は、複数のcaseを続けて書き、共通処理を1か所にまとめます。詳しくは、Java switch caseで複数条件をまとめる書き方で確認できます。

自分で試す練習

  • 最初のコードのmenuNumberを1、3、9に変えて、実行されるcaseを確認する
  • case 2:break;だけを削除し、実行結果がどう変わるか確認する
  • Stringのコードでcommand"help""START"に変える

確認問題

  1. 整数型の変数dayが1なら「月曜日」、2なら「火曜日」、3なら「水曜日」、それ以外なら「対象外」と表示するswitch文を書いてください。
  2. 文字列型の変数productCode"A"なら「ノートPC」、"B"なら「マウス」、"C"なら「キーボード」、それ以外なら「未登録」と表示してください。
  3. 次の条件を考えます。「scoreが80以上なら合格、80未満なら再挑戦」。switch文とif文のどちらが適していますか。理由も説明してください。
  4. 次のコードでnumberが2の場合、何が表示されますか。breakの役割とあわせて考えてください。
switch (number) {
    case 1:
        System.out.println("A");
    case 2:
        System.out.println("B");
    case 3:
        System.out.println("C");
}

演習後の確認:こちらのページを使って、自分で考えたコードと理由を見直せます。先に答えを書いてから確認してください。

あわせて読みたい関連記事

まとめ

switch文は、1つの値を決まった候補と照らし合わせて処理を分ける書き方です。一致したcaseから処理を始め、breakでswitch文を抜けます。どのcaseにも一致しない場合はdefaultを実行します。

switch式にはintcharStringenumなどを指定できます。一方、値の範囲や複雑な条件にはif・else ifが適しています。条件の種類に応じて、処理の流れを読み取りやすい書き方を選びましょう。

info

シェアする