Javaで多重ループを一気に抜けるbreak文の使い方【ラベルを使ってスッキリ制御】
こんにちは。ゆうせいです。
今回は、「多重ループを一発で抜けたい!」というときに便利な、Javaのbreak
文の使い方についてお話しします。特に、2重・3重のループを一気に抜けたいときにどうするか?を丁寧に解説していきます。
「breakって1個のループしか抜けられないんじゃないの?」と感じた方も多いのではないでしょうか?
実は、「ラベル付きbreak文」を使えば、複数階層のループを一発で抜けることができるんです!
多重ループとは?
まずは前提を確認しておきましょう。
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
// 何か処理
}
}
こういった、ループの中にさらにループがある構造を「多重ループ(ネストされたループ)」と呼びます。
たとえば、ある条件に合致したら、内側のループだけでなく、外側のループもまとめて抜けたいことがありますよね。
通常のbreak文ではどうなる?
まずは普通のbreak
を使った例です。
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (j == 2) {
break;
}
System.out.println("i=" + i + ", j=" + j);
}
}
この場合、j == 2
になると内側のループだけを抜けて、外側のループ(i
のループ)は続行されます。
つまり、「全部抜けたい」という目的には合いません。
ラベル付きbreak文の登場!
Javaには、ループに「ラベル」を付けて、そのラベル付きループをbreak
で抜けるという技があります。
書き方
ラベル名: for (...) {
for (...) {
if (条件) {
break ラベル名;
}
}
}
実際のコード
outerLoop: // ラベルを付ける
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (i == 2 && j == 2) {
break outerLoop; // 外側のループまで一気に抜ける
}
System.out.println("i=" + i + ", j=" + j);
}
}
実行結果(抜粋)
i=0, j=0
i=0, j=1
i=0, j=2
...
i=2, j=1
i=2, j=2
に到達したら、内側も外側もまとめて終了しました!
メリットとデメリット
項目 | 内容 |
---|---|
メリット | 多重ループをすっきり制御できる |
メリット | 無駄なフラグ変数がいらない |
デメリット | ラベル構文は慣れないと読みにくい |
デメリット | 濫用するとスパゲッティコードになりやすい |
こんなときに使おう!
- ネストが深くて条件に合致したらすぐにすべて終了したいとき
- 内側ループの終了だけでは処理が正しく続けられないとき
おすすめしないケース
- 条件が複雑ではない場合
- 単純に内側だけ抜ければ済む処理
- 可読性が最優先される場面(レビューで指摘されることも)
まとめと次のステップ
ラベル付きbreak文を使うことで、多重ループから一気に脱出できるのがJavaの特徴です!
ただし、コードの可読性にも注意しながら使いましょう。
次のステップとしては、
continue
文にもラベルをつけられるって知ってましたか?- Javaでの「ループ制御構文」をマスターして、もっとスマートに書けるようになりましょう!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
山崎講師2025年5月22日相関サブクエリと非相関(普通の)サブクエリの違いをわかりやすく解説!
山崎講師2025年5月22日【保存版】新人エンジニアのためのMySQL Workbench便利Tips10選!
山崎講師2025年5月21日【初心者向け】MySQLと標準SQLの違い10選をわかりやすく解説!
山崎講師2025年5月21日MySQL WorkbenchでBoolean型が設定できない理由と対処法