Java switch文・switch式の使い方完全ガイド
CONTENTS
switch文とは?基本の仕組みと役割

「if-elseが増えすぎて読みにくい」
「分岐条件が多くて整理できない」
このような悩みは、Javaを学ぶ多くの人が経験します。
switch文は、1つの値に基づいて処理を分岐する構文です。
候補が多い場合でも、見通しよく書けます。
多岐分岐に向いている理由
例えば状態コードの分岐:
switch (status) {
case 1: start();
break;
case 2: stop();
break;
case 3: pause();
break;
}
if文よりも構造が明確です。
if文との違い
| 条件 | 向いている構文 |
|---|---|
| 値の一致 | switch |
| 範囲・複合条件 | if |
| 条件が複雑 | if |
実務での利用例
- 状態コード処理
- メニュー番号分岐
- コマンド処理
- enum状態の分岐
switchは「値一致の分岐」を整理する構文です。
候補が多いほど威力を発揮します。
switch文の基本構文と動作の流れ
switchの基本構造を理解すると、バグを防げます。
基本構文
switch (value) {
case 1: System.out.println("ONE");
break;
case 2: System.out.println("TWO");
break;
default: System.out.println("OTHER");
}
各要素の役割
- case → 一致時の入口
- break → switchを終了
- default → どれにも一致しない場合
実行の流れ
-
式を評価
-
一致するcaseへジャンプ
-
下方向へ処理が流れる
フォールスルーとは
breakがない場合:
case 1: System.out.println("A");
case 2: System.out.println("B");
value=1 → AとBが両方実行されます。
switchは「ジャンプ後に下へ流れる」構造です。
breakの有無で動作が変わります。
switchに書ける型とcaseラベルの制約
switchは使用できる型が限定されています。
使用可能な型
- int / byte / short / char
- Integer などラッパー型
- String
- enum
※ long / float / double は不可
caseに書ける値
✔ 数値リテラル
✔ 文字列リテラル
✔ enum定数
✔ final定数
❌ 変数や計算結果
String使用時の注意
switch (command) {
case "START":
case "STOP":
}
入力の揺れに注意:
- 大文字小文字
- 空白
- 全角半角
対策:
command = command.trim().toUpperCase();
switchは静的に評価可能な値で分岐します。
動的条件には向きません。
フォールスルーの理解と安全な書き方

フォールスルーはswitch特有の挙動です。
意図しない例
case 1: result = "A";
case 2: result = "B";
value=1 → Bに上書きされます。
意図的に使う例
case 1:
case 2:
case 3: System.out.prinln("LOW");
break;
Java12以降の安全な書き方
case 1,2,3 -> System.out.println("LOW");
- break忘れは重大バグ
- まとめる場合は新構文が安全
enum・Stringで分岐する実務テクニック

enumを使うメリット
enum Status {
NEW,
RUNNING,
DONE
}
switch (status) {
case NEW -> start();
case RUNNING -> process();
case DONE -> finish();
}
メリット:
- マジック値排除
- 可読性向上
- 網羅性チェック可能
defaultの扱い
defaultで例外を投げる:
default -> throw new IllegalStateException();
String入力の安全化
実務では:
-
String入力受取
-
enumへ変換
-
switch処理
enumを使うと安全で保守しやすくなります。
enumを使った設計は、実務レベルのコード品質に直結します。
独学では気づきにくい「保守しやすい設計の考え方」まで身につけたい方は、
ZeroCodePlusの実践型カリキュラムがおすすめです。
Java14以降のswitch式(switch expression)

Java14以降、switchは値を返せます。
従来
String result;
switch (num) {
case 1: result = "ONE";
break;
default: result = "OTHER";
}
switch式
String result = switch (num) {
case 1 -> "ONE";
default -> "OTHER";
};
矢印構文の特徴
- break不要
- フォールスルーなし
- 安全で簡潔
複数処理の場合
case 1 -> {
log();
yield "ONE";
}
switch式は現代Javaの標準です。
新規コードでは積極的に活用しましょう。
よくあるエラーと実務での注意点
NullPointerException
switch (str) // strがnull→例外
対策:
if(str == null) return;
case重複エラー
同じ値は書けません。
変数スコープ衝突
case 1: int x = 1;
case2: int x = 2; // エラー
対策:
case 1: {
int x = 1;
break;
}
switchはシンプルですが、細かいルールがあります。
switch文を理解できたあなたは、確実に設計力が伸びています。
次は「実務で通用するJavaスキル」を身につけてみませんか?
ZeroCodePlusでは、未経験から現場レベルを目指せる実践型学習を提供しています。
まとめ|switchを使いこなす設計思考
switchは単なる分岐構文ではありません。
読みやすく安全なコード設計の基礎です。
重要ポイント
✔ 値一致分岐に最適
✔ break忘れに注意
✔ enumで安全性向上
✔ switch式で簡潔に
✔ 入力の正規化を行う
分岐構造を整理できる人は、コード設計の理解が深いエンジニアです。