Javaのfor文とは?初期化・条件式・更新の流れを初心者向けに解説

最終更新日

Schoo Java入門 初級【2026年版】

本記事は、Schooの「Java入門 初級【2026年版】」第4回「繰り返し処理」を学んだあとに、for文の初期化・条件式・更新が実行中にどう動くかを、コードと値の変化を対応させて理解したい方向けのステップアップ学習記事です。

ただし、Schooを受講していない方でも、Javaの変数とSystem.out.printlnを学び始めたばかりであれば読み進められる内容にしています。

Schoo コースページ:Java入門 初級【2026年版】

for (int i = 1; i <= 10; i++)を見たとき、「10回繰り返す」と丸ごと覚えるだけでは、<<=の違いや、合計が55になる理由でつまずきます。この記事では、1周ごとにisumを追います。

ForSum.javaでは、どこに何を書くのか

第4回の課題ファイルForSum.javaには、1から10までを合計するfor文の枠組みが用意されています。自分で追加するのは、波かっこの中でisumへ足す1行です。その1行がなぜここに必要なのかを理解するために、まずfor文の各部分が担当する役割を確認します。

ファイル名: ForSum.java

public class ForSum {
    public static void main(String[] args) {
        int sum = 0;

        for (int i = 1; i <= 10; i++) {
            // ここに i を sum に足す処理を書きます。
        }

        System.out.println("合計:" + sum);
    }
}
  1. int sum = 0;:合計を入れる箱を、ループので0にします。
  2. int i = 1:最初の数としてiに1を入れます。これは最初に1回だけ行われます。
  3. i <= 10:今のiが10以下なら、波かっこの中を実行します。
  4. i++:波かっこの中を1周したあと、iを1増やします。

for文は「初期化→判定→処理→更新」の順に動く

for文のかっこの中は左から順に毎回実行されるわけではありません。初期化は最初の1回だけ、条件式は各周の前、更新は各周の後です。次のツールで、終了する値を変えながら流れを見てください。

終了する値を変える


    

1周ごとの値の変化


    

例えば終了する値を5にすると、iが1〜5の周では条件がtrueです。5を処理したあとにi++でiは6になり、次の判定6 <= 5がfalseになるため、波かっこの中へ入りません。

空欄にはsum += iを書く

sum += iは、sum = sum + iを短く書いたものです。今までの合計を消さず、iの値を足した新しい合計をsumへ戻します。

ファイル名: ForSum.java

public class ForSum {
    public static void main(String[] args) {
        int sum = 0;

        for (int i = 1; i <= 10; i++) {
            sum += i;
        }

        System.out.println("合計:" + sum);
    }
}

実行結果

合計:55
isum += i のあと
11
23
36
1055

1〜10のつもりでi < 10と書くとどうなるか

「10まで」と聞くとi < 10と書きたくなることがあります。しかしこの条件では、iが10になった時点でfalseです。つまり10を足す周は実行されず、合計は45になります。

ファイル名: ForSum.java

int sum = 0;

for (int i = 1; i < 10; i++) {
    sum += i;
}

System.out.println("合計:" + sum);

実行結果

合計:45

境目を確認するときは、「iが10のときに波かっこの中へ入るか」を読みます。入れたいならi <= 10、入れたくないならi < 10です。

よくあるつまずきは、値の変化で確認する

sumをループの中で0に戻してしまう

for (int i = 1; i <= 10; i++) {
    int sum = 0;
    sum += i;
}

この書き方では、周が始まるたびにsumが0になります。合計を持ち続けたい変数はfor文の外で作ります。また、このsumはfor文の外では使えません。

sum =+ i と書いてしまう

sum += isum =+ iは別物です。後者は「iを正の値としてsumへ代入する」書き方で、前の合計を使いません。合計を増やすときは、+=の順番を確認します。

forのかっこの区切りをカンマにする

コンパイルエラー例: for (int i = 1, i <= 10, i++)

for文の初期化・条件式・更新はセミコロンで区切ります。for (int i = 1; i <= 10; i++)のように、かっこの中だけにセミコロンが2つあることを確認してください。

自分で試す練習

完成したForSum.javaをコピーして、次の順に1つずつ変更します。変更後は、実行前に「最後に処理されるi」と「sumの予想」を書いてから実行してみましょう。

  1. 開始値をi = 3、終了条件をi <= 8に変え、3〜8の合計を求める。
  2. i++i += 2に変え、1〜10の奇数だけを合計する。
  3. System.out.println(i + " を足す前の合計:" + sum);sum += i;の前に置き、表示順を確認する。

確認問題

  1. for (int i = 0; i < 3; i++)で、波かっこの中を実行するiの値をすべて答えてください。
  2. 1〜10の偶数を合計するfor文を書いてください。
  3. sumをfor文の外で宣言する理由を説明してください。
  4. i <= 10i < 10へ変えたとき、ForSumの結果がどう変わるか答えてください。

演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。

あわせて読みたい関連記事

まとめ

for文は、初期化を1回だけ行い、条件がtrueの間は処理と更新をくり返します。iの最後の値だけでなく、条件式を判定する時点の値まで追うと、<<=の違いを判断できます。

合計では、sumをループの外で用意し、各周でsum += iを実行します。コードを少し変え、iとsumの表を自分で書きながら確かめると、for文を「回数を覚える構文」ではなく「値を変化させる処理」として読めるようになります。

シェアする