PR

Javaのfor文:繰り返し処理の基本から応用までを3分で解説

Java

Javaのfor文は、特定の回数だけ繰り返し処理を行うための構文です。ループの開始から終了までの手順を簡潔に記述できる、頻繁に利用される構文の1つ。

どのプログラミング言語でも共通して、繰り返し処理は一般的かつ重要な要素です。Javaにはループ処理を行うための様々な方法がありますが、その中でもfor文は最も基本的な構文の1つ。本記事では、初心者の方でも理解しやすいように、Javaのfor文について1からわかりやすく丁寧に解説します。

for文の基本的な構文から実際の使用例、そしてよくあるパターンや注意点までを網羅しています。

関連 Javaの1stステップ:基本的な構文ルールを復習する

スポンサーリンク

for文の基本構文

Javaのfor文の構文ルールは以下の通り。

for (初期化; 条件式; 更新処理) {
    処理内容
}

そして超・簡単なサンプルコードがこちら。

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

これだけだと何を書いているかいまいち理解しきれないと思いますので、1個ずつ丁寧に説明していきます。

初期化

ループを始める前に1度だけ実行される部分。ここでは、一般的にカウンタ変数(繰り返し回数を数える変数)の初期値を設定します。

int i = 0;

更新処理

ループが1回実行されるたびに実行される部分です。通常、カウンタ変数の値を増やしたり減らしたりします。

i++;

処理内容

ループの中で繰り返し実行される処理を記述します。

System.out.println(i);

これらを組み合わせると、以下のようになります。

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

↑のコードは、ループを開始する前にi0に初期化(int i = 0;)。iが10未満であるかを条件式でチェックし(i < 10)条件がtrueであればループを続けます。同様に繰り返し処理を続けた後、再び条件式をチェックし、条件がfalseになったタイミングでループを終了します。

for文のよくある使い方と注意点・利点

基本的な構文ルールを学んだところで、より実践的なコードを見ていきながらfor文を利用する際の注意点やメリットなどを1個1個確認していきます。

サンプルコード1 カウンタ変数を使ったループ

for (int i = 0; i < 5; i++) {
    System.out.println("繰り返し回数: " + i);
}

// 繰り返し回数: 0
// 繰り返し回数: 1
// 繰り返し回数: 2
// 繰り返し回数: 3
// 繰り返し回数: 4

    このコードは、iが0から始まり、iが5未満の間(0から4まで)、iを1ずつ増やしながらループを繰り返します。各ループでiの値を表示します。

    for文の大きな利点が、初期値や条件、増減値を自由に設定できる、ということ。例えば、iを2ずつ増やしたり、逆に減らしたりすることも可能です。また、ループの開始から終了までの流れが一目でわかりやすいように記述されているのも大きなメリットです。ただし、条件式が間違っていると無限ループになる可能性がある点に注意しましょう。例えば、iを増やす部分を忘れると、iが永遠に0のままになり、無限ループに陥ります。

    ↓無限ループの例

    for (int i = 0; i < 5;) {
        System.out.println("無限ループ");
    }

    サンプルコード2 配列の要素を処理する

    int[] numbers = {1, 2, 3, 4, 5};
    for (int i = 0; i < numbers.length; i++) {
        System.out.println("配列の要素: " + numbers[i]);
    }
    
    // 配列の要素: 1
    // 配列の要素: 2
    // 配列の要素: 3
    // 配列の要素: 4
    // 配列の要素: 5

    こちらは、配列numbersの各要素にアクセスして、その値を表示するサンプルコード。iが0から始まり、iが配列の長さ未満の間(0から4まで)、iを1ずつ増やしながらループを繰り返します。

    配列と組み合わせてfor文を利用する方法はよくある使い方の1つで、これはi < numbers.lengthという記述がポイント。配列の全ての要素を処理しつつ、無限ループなどのリスクを低減させることができます。ただし、条件式を間違えると範囲外の要素にアクセスしてエラーが発生します。例えば、次のコードではi <= numbers.lengthとなっているため、範囲外アクセスが発生します。

    for (int i = 0; i <= numbers.length; i++) { // エラー
        System.out.println(numbers[i]);
    }

    拡張for文(for-eachループ)

    拡張for文(for-eachループ)は、配列やコレクションの全ての要素を簡単に処理するための構文です。通常のfor文よりもシンプルで、配列やコレクションの要素を順番に取り出して処理を行うのに適しています。

    for (要素の型 要素の変数名 : 配列やコレクション) {
        処理内容
    }

    例えば、整数の配列numbersがあるとします。この配列の各要素を表示するコードは以下のようになります。

    int[] numbers = {1, 2, 3, 4, 5};
    for (int number : numbers) {
        System.out.println("配列の要素: " + number);
    }
    
    // 配列の要素: 1
    // 配列の要素: 2
    // 配列の要素: 3
    // 配列の要素: 4
    // 配列の要素: 5

    forの後に続く部分が、通常のfor文と少し違います。int numberは、配列numbersの各要素を受け取るための変数を宣言しています。: numbersは配列numbers全体を指定しており、結果として括弧内の部分は「配列numbersの各要素を順にnumberという変数に取り出してループを実行する」という意味になります。

    for-eachループは通常のfor文よりも簡潔でコードが短くなるだけでなく、インデックスを気にする必要がなく、配列やコレクション全体を処理するのに適しています。また、範囲外アクセスの心配がありません。通常のfor文でインデックスを間違えると、範囲外の要素にアクセスしてエラーが発生する可能性がありますが、拡張for文ではその心配がありません。

    サンプルコード 拡張for文

    import java.util.ArrayList;
    import java.util.List;
    
    public class ForEachExample {
        public static void main(String[] args) {
            // リストの作成と初期化
            List<String> fruits = new ArrayList<>();
            fruits.add("Apple");
            fruits.add("Banana");
            fruits.add("Cherry");
            fruits.add("Date");
            fruits.add("Elderberry");
    
            // 拡張for文を使ってリストの要素を表示
            for (String fruit : fruits) {
                System.out.println("果物の名前: " + fruit);
            }
        }
    }
    
    // 果物の名前: Apple
    // 果物の名前: Banana
    // 果物の名前: Cherry
    // 果物の名前: Date
    // 果物の名前: Elderberry

    まとめ for文(for-each文)

    for文は、特定の回数だけ繰り返し処理を行うための基本構文。以下のサンプルコードとそのポイントを理解できればOK!

    public class ForLoopExamples {
        public static void main(String[] args) {
            // 1. カウンタ変数を使ったループ
            for (int i = 0; i < 5; i++) {
                System.out.println("繰り返し回数: " + i);
            }
            // 出力結果:
            // 繰り返し回数: 0
            // 繰り返し回数: 1
            // 繰り返し回数: 2
            // 繰り返し回数: 3
            // 繰り返し回数: 4
    
            // 2. 配列の要素を処理する
            int[] numbers = {1, 2, 3, 4, 5};
            for (int i = 0; i < numbers.length; i++) {
                System.out.println("配列の要素: " + numbers[i]);
            }
            // 出力結果:
            // 配列の要素: 1
            // 配列の要素: 2
            // 配列の要素: 3
            // 配列の要素: 4
            // 配列の要素: 5
    
            // 3. 拡張for文(for-eachループ)
            for (int number : numbers) {
                System.out.println("配列の要素: " + number);
            }
            // 出力結果:
            // 配列の要素: 1
            // 配列の要素: 2
            // 配列の要素: 3
            // 配列の要素: 4
            // 配列の要素: 5
        }
    }

    このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

    1. 勉強:一度理解した内容を忘れないように。
      → アウトプットは「最強のインプット」である! 
    2. 備忘:忘れたとしても後から見返せるように。
      → 未来の自分への「お手紙」を書いています。 
    3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
      → あなたの知識は誰かにとっての「価値ある情報」です。 

    副業ブログの始め方はこちらから

    スポンサーリンク
    Java
    シェアする
    ビズドットオンラインをフォローする
    タイトルとURLをコピーしました