#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿