#6 Javaで学ぶループの基本

Javaのループは、C言語系の言語に共通する標準的な書き方に加えて、配列やリストを扱いやすい拡張for文が用意されています。この記事では、Javaにおけるループの基本と、目的別の使い分けを解説します。

for文の基本

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

括弧内は「初期化式; 継続条件; 更新式」の3つで構成されています。初期化式でカウンタ変数`i`を用意し、継続条件を満たす間繰り返し、1周ごとに更新式(`i++`)が実行されます。

拡張for文

配列やリストの中身を1つずつ処理したい場合は、拡張for文(for-eachとも呼ばれる)が便利です。

String[] fruits = {"りんご", "みかん", "ぶどう"}; for (String fruit : fruits) { System.out.println(fruit); }

添字を管理する必要がなく、簡潔に書けます。`List`のようなコレクション型に対しても同じ書き方が使えます。

List<String> list = List.of("a", "b", "c"); for (String s : list) { System.out.println(s); }

while文とdo-while文

int count = 0; while (count < 5) { System.out.println(count); count++; }

Javaには「最低1回は処理を実行してから条件を判定する」`do-while`文もあります。

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

ループの制御:break/continue

特定の条件でループを抜けたい場合は`break`、その回だけスキップしたい場合は`continue`を使います。二重ループの外側だけを抜けたい場合は、ラベルを使うことで実現できます。

outer: for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (j == 1) continue outer; System.out.println(i + "," + j); } }

Javaならではの注意点

拡張for文は読みやすい反面、ループの途中で今何番目の要素を処理しているかという「添字」の情報を直接扱えません。添字が必要な処理では、従来のfor文か、`IntStream.range`のようなStream APIを使う方法があります。また、拡張for文でリストの要素を走査しながら`remove`のような変更操作を行うと`ConcurrentModificationException`という実行時エラーが発生することがあり、これはJavaの初心者がよくハマる落とし穴の一つです。要素を削除したい場合は`Iterator`を使うか、`removeIf`メソッドを使うのが安全です。

まとめ

Javaのループは基本のfor文・while文・do-while文に加えて、拡張for文が配列やリストの処理を簡潔にしてくれます。添字が必要かどうか、ループ中に要素を変更するかどうかで、適切な書き方を使い分けましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

Javaをもっと学びたい方には「スッキリわかるJava入門 第4版」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本