MEDIA

メディア

  1. TOP
  2. メディア
  3. プログラミング
  4. Java switch文・switch式の使い方完全ガイド

Java switch文・switch式の使い方完全ガイド

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は「値一致の分岐」を整理する構文です。

候補が多いほど威力を発揮します。

if文の使い方はこちらの記事もどうぞ!

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 → どれにも一致しない場合

実行の流れ

  1. 式を評価

  2. 一致するcaseへジャンプ

  3. 下方向へ処理が流れる

フォールスルーとは

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();
}

メリット:

  • マジック値排除
  • 可読性向上
  • 網羅性チェック可能

enumの使い方についてはこちらの記事もどうぞ!

defaultの扱い

defaultで例外を投げる:

default -> throw new IllegalStateException();

String入力の安全化

実務では:

  1. String入力受取

  2. enumへ変換

  3. 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式で簡潔に

✔ 入力の正規化を行う

分岐構造を整理できる人は、コード設計の理解が深いエンジニアです。

Join us! 未経験からエンジニアに挑戦できる環境で自分の可能性を信じてみよう 採用ページを見る→

記事監修

ドライブライン編集部

[ この記事をシェアする ]

記事一覧へ戻る