10.

繰り返し制御文

編集

Javaの繰り返し制御文の記事です。同じ処理を複数回実行するための構文を集めています。

子ページからそれぞれの制御文を選択してください。

本ページの子ページ一覧

構文用途
for文回数が決まっている繰り返し
拡張for文配列・コレクションを順に処理(foreach)
while文条件が真の間繰り返し
do while文1回は必ず実行してから条件判定
continue文その回の残りをスキップして次へ
break文ループを途中で抜ける

基本構文の早見

for文

for (int i = 0; i < 10; i++) {
    System.out.println(i);
}

拡張for文(foreach)

int[] nums = {1, 2, 3, 4, 5};
for (int n : nums) {
    System.out.println(n);
}

List<String> names = List.of("Taro", "Jiro");
for (String name : names) {
    System.out.println(name);
}

while文

int i = 0;
while (i < 10) {
    System.out.println(i);
    i++;
}

do while文

int i = 0;
do {
    System.out.println(i);
    i++;
} while (i < 10);

break / continue

for (int i = 0; i < 10; i++) {
    if (i == 5) break;      // ループ脱出
    if (i % 2 == 0) continue; // 偶数はスキップ
    System.out.println(i);
}

使い分けの目安

場面推奨
回数が決まっているfor
配列・コレクションを全部拡張for(foreach)
条件が成立する限り続けるwhile
最低1回は実行do while
関数型風の流暢な記述Stream API(list.forEach(...)等)

Stream API(Java 8以降)

新しいコードでは Stream API を使う場合も多いです。

List<Integer> nums = List.of(1, 2, 3, 4, 5);

// forEach
nums.forEach(System.out::println);

// filter + map + sum
int sum = nums.stream()
    .filter(n -> n % 2 == 0)
    .mapToInt(Integer::intValue)
    .sum();

注意点

  • 無限ループ: 条件が常に真になる場合は break 必須
  • off-by-one: i <= lengthi < length の混同に注意
  • ループ内でコレクション変更: 拡張forでコレクションを変更すると ConcurrentModificationExceptionIterator を直接使うか、新リストを作る
  • ネストループの脱出: break は1段階のみ。多段脱出にはラベルを使う

関連

編集
Post Share
子ページ
  1. for文
  2. 拡張for文
  3. while文
  4. do while文
  5. continue文
  6. break文
同階層のページ
  1. 基本的なルール
  2. データ型
  3. 変数
  4. 定数
  5. 配列
  6. コレクション(List,Set,Queue)
  7. Map(連想配列)
  8. 演算子
  9. 条件分岐
  10. 繰り返し制御文
  11. クラス
  12. メソッド
  13. インスタンス化
  14. コンストラクタ
  15. staticキーワード
  16. オーバーロード
  17. 継承
  18. オーバーライド
  19. this
  20. super
  21. パッケージ
  22. アクセス修飾子
  23. 抽象クラス・メソッド
  24. インターフェース
  25. カプセル化
  26. データベース接続
  27. セッション
  28. ファイル入出力
  29. ラムダ式