Javaの学習を進めていくと、「特定の条件によって処理を細かく分けたい」という場面が増えてきます。そんなときに便利なのが「switch文」です。if文でも同じことはできますが、選択肢が多い場合にはswitch文を使うことで、驚くほどコードがスッキリと読みやすくなります。
この記事では、switch文の基本から現場で必須の注意点、そして最新のJavaでの便利な書き方まで、実務での体験談を交えて分かりやすく解説します。


Java switch文とは何か?初心者が知っておくべき基本概念
switch文とは、ある式の「値」に基づいて、複数の処理の中から一致するものを一つ選んで実行する多方向分岐の構文です。
「この値ならこのケース(case)」というように、パズルのピースをはめるような感覚で条件分岐を記述できます。条件が「もし1なら」「もし2なら」のように、特定の値との一致を判定する場合には非常に強力です。
switch文の基本構造をマスターしよう
まずは基本の形を見てみましょう。Javaのswitch文は以下のような構成になっています。
switch (判定する変数) {
case 値1:
// 変数が値1のときの処理
break; // switch文を終了する
case 値2:
// 変数が値2のときの処理
break;
default:
// どの値にも一致しなかったときの処理
break;
}
ここで重要なのは、caseの後の「コロン(:)」と、各処理の終わりの「break;」です。

条件分岐の基本であるif文については、こちらの記事で詳しく解説しています。

switch文はどう使う?具体的な実践例で理解する
switch文は、数値だけでなく文字列(Java 7以降)などでも使用可能です。具体的な例を見て、使い方をイメージしてみましょう。
例1:数値による曜日の判定
数値を入力すると、対応する曜日を判定するプログラムです。
int dayOfWeek = 1;
switch (dayOfWeek) {
case 1:
System.out.println("月曜日です");
break;
case 2:
System.out.println("火曜日です");
break;
default:
System.out.println("その他の曜日、または不正な入力です");
break;
}
このコードでは、dayOfWeekが1なので、最初のケースが選ばれ「月曜日です」と出力されます。もしどの数値にも当てはまらなければ、defaultが実行されます。
例2:文字列によるコマンド分岐
実務では文字列の判定も非常によく使います。
String action = "START";
switch (action) {
case "START":
System.out.println("起動します...");
break;
case "STOP":
System.out.println("停止します...");
break;
default:
System.out.println("未定義のアクションです");
break;
}
このコードでは、文字列「START」に一致するケースが実行されます。if文で書くよりも条件の意図が明確になりますね。
データの種類(型)については、以下の記事で詳しく紹介しています。

【現場の失敗談】breakを忘れると何が起きる?「フォールスルー」の恐怖
switch文で初心者が最も犯しやすい、そして現役エンジニアでもうっかりやってしまうミスが、「breakの書き忘れ」です。
Javaのswitch文は、breakがないと、条件が一致したケースの「下にある処理」まで次々と実行してしまいます。これを「フォールスルー」と呼びます。
int status = 1;
switch (status) {
case 1:
System.out.println("初期化を開始します");
// ここでbreakを忘れた!
case 2:
System.out.println("データを削除します");
break;
}
// 実行結果:
// 初期化を開始します
// データを削除します ← 意図せずデータが消えてしまう!

break を書き忘れてしまい、正常決済なのに「キャンセル処理」まで突き抜けて実行されるという恐ろしいバグを出したことがあります。それ以来、switch文を書くときは手が震えるほど break を確認するようになりました(笑)
もちろん、意図的に break を書かないことで「複数のケースで同じ処理をさせる」というテクニックもありますが、初心者のうちは「1ケースに1break」を鉄則にしましょう。
switch文とif文、どっちを使うべき?プロの使い分け基準
「if文でも書けるのに、なぜswitch文があるのか?」という疑問への答えは、ズバリ「読みやすさと意図の明確化」にあります。プロの現場では、以下のように使い分けます。
| 特徴 | switch文がおすすめ | if文がおすすめ |
|---|---|---|
| 判定内容 | 特定の値と一致するか(等価) | 範囲(以上・以下)や複雑な条件 |
| 選択肢の数 | 多い場合(3つ以上が目安) | 少ない場合(2択など) |
| 可読性 | フラットで読みやすい | else-ifが重なると読みにくい |
例えば、「点数が80点以上ならA、70点以上ならB」のような範囲判定には、if文(特に else if)が最適です。

【モダンJava】より安全で簡潔な「switch式」を知っておこう
実は最近のJava(Java 12以降)では、従来のswitch文の弱点を克服した「switch式」という新しい書き方が登場しています。
これを使えば、面倒な break を書く必要がなく、フォールスルーのバグも防げます。
String result = switch (score) {
case 100 -> "満点!";
case 90, 91, 92 -> "おしい!"; // 複数をカンマで指定可能
default -> "もっと頑張りましょう";
}; // 式なのでセミコロンが必要
アロー演算子(->)を使うことで、パッと見て何が返ってくるかが一目瞭然です。新しくJavaを学ぶなら、将来的にこの書き方が主流になるのでぜひ覚えておきましょう。

まとめ:switch文をマスターして読みやすいコードへ
switch文は、プログラムに「整理整頓」をもたらしてくれる強力なツールです。最後に、この記事の重要ポイントを振り返りましょう。
この記事のポイント
- switch文は「特定の値」に基づく多方向分岐に最適
breakを忘れると下のケースまで実行される(フォールスルー)- どのケースにも合わない場合は
defaultが実行される - 範囲判定ならif文、特定の値ならswitch文という使い分けがプロの技
- 最新のJavaではより安全な「switch式」が使える

次は、プログラムの基礎である「変数」や「定数」について復習するのも良いでしょう。



