この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:guest
更新日時:2026-06-11 07:10:02

タイトル: break文
SEOタイトル: break文 完全ガイド(Java / JS / for / while / switch / 多重ループ / ラベル / continue との違い)

この記事の要点
  • break 文はループや switch 文を途中で抜ける制御構文
  • 基本構文: break; — 最も内側のループ / switch を抜ける
  • 多重ループで外側まで抜けたい場合はラベル付き break(Java / JavaScript)を使う
  • continue は「現在の周回を飛ばして次へ」、break は「ループ自体を抜ける」と役割が違う
  • switch 文では各 case の終わりに break を書かないとフォールスルーして次の case が実行される

break 文とは

break 文は、ループや switch 文の実行を途中で打ち切って外へ抜ける制御構文です。Java / C / C++ / JavaScript / Python など、多くの言語で同じキーワード break として用意されています。

基本構文

for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break;   // i == 5 でループを抜ける
    }
    System.out.println(i);
}
// 出力: 0 1 2 3 4

使える文

構文break の動き
for / for-eachループを完全終了
while / do-whileループを完全終了
switchその case の実行を打ち切って switch を抜ける

if 文の中だけに break を書くことはできず、必ずループ / switch の中に置く必要があります(if は単独では break の対象にならない)。

switch 文での break

switch 文では各 case の終わりに break を書かないと、次の case にも処理が流れ込みます(フォールスルー)。意図しない動作の原因になりやすいので注意。

switch (day) {
    case "MON":
        System.out.println("月曜");
        break;
    case "TUE":
        System.out.println("火曜");
        break;
    case "SAT":
    case "SUN":
        System.out.println("週末"); // SAT も SUN も合流
        break;
    default:
        System.out.println("その他");
}

多重ループと break

break最も内側のループしか抜けません。外側まで抜けたい場合は次のいずれかを使います。

方法言語
ラベル付き breakJava / JavaScript
フラグ変数すべて
関数 / メソッドに切り出して returnすべて
例外を投げる(非推奨)すべて

ラベル付き break(Java / JavaScript)

outer:
for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
        if (i * j > 20) {
            break outer;   // 外側のループまで抜ける
        }
    }
}

フラグ変数

boolean found = false;
for (int i = 0; i < n && !found; i++) {
    for (int j = 0; j < m; j++) {
        if (matrix[i][j] == target) {
            found = true;
            break;
        }
    }
}

continue との違い

キーワード動作
breakループ自体を打ち切る(その後の周回は実行しない)
continue現在の周回だけスキップして次の周回へ
for (int i = 0; i < 5; i++) {
    if (i == 2) continue;  // 2 だけ飛ばす → 0 1 3 4
    System.out.println(i);
}

for (int i = 0; i < 5; i++) {
    if (i == 2) break;     // 2 で抜ける → 0 1
    System.out.println(i);
}

break と return の使い分け

関数 / メソッドの途中で結果が決まったら即返したい場合は、ループから break するよりreturn のほうがすっきり書けることが多いです。

// break + フラグ版
boolean contains = false;
for (int x : arr) {
    if (x == target) { contains = true; break; }
}
return contains;

// return 版(こちらが簡潔)
for (int x : arr) {
    if (x == target) return true;
}
return false;

言語別の細かな違い

言語break の特徴
Javaラベル付き break label; あり。switch でフォールスルー回避に必要
JavaScript同上。for ... in / for ... of でも使える
C / C++ラベル付きはなし。goto やフラグで代用
Pythonbreak あり。ラベルなし。for-else 構文と組合せ可(break しなければ else 実行)
Kotlinラベル付き break@outer
Goラベル付き break。switch でのフォールスルーは fallthrough を明示

無限ループからの脱出

while (true) のような無限ループでは、break で抜ける条件を中に書きます。

while (true) {
    String line = reader.readLine();
    if (line == null) break;     // EOF
    if (line.equals("exit")) break;
    process(line);
}

よくある間違い

  • if 単独で break — ループ / switch 外なのでコンパイルエラー
  • switch の break 忘れ — 次の case にフォールスルーする
  • ラベル名を間違える — ラベル付き break で別のラベル名を書くとコンパイルエラー
  • break と return の混同 — メソッド全体を抜けるなら return、ループだけなら break

FAQ

Q: forEach(Java の Stream)で break したい
A: Stream.forEach では break できません。条件で打ち切るなら anyMatch / findFirst / 通常の for ループに切り替えます。

Q: Python の for-else って?
A: else 節はループがbreak せず最後まで回ったときに実行されます。「探索失敗時の処理」を書きやすい構文です。

Q: 例外で抜けてはダメ?
A: 性能・可読性ともに非推奨。例外は例外的な状況のためのものです。

関連

  • 繰り返し制御文 — 親カテゴリ
  • continue 文 — 周回スキップ
  • return 文 — メソッド全体を抜ける
  • switch 文 / case — フォールスルーと break
  • for / while / do-while — ループ構文