では「ループの中でのインクリメント(i++ / ++i)」について整理してみましょう。
1. for文での使い方
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
Java- ここでの
i++は「ループの最後に 1 増える」役割。 - 実行結果は
0, 1, 2, 3, 4。
👉 ポイント: i++ でも ++i でも結果は同じ。
なぜなら「ループの最後に評価される」から、前置/後置の違いが影響しない。
2. while文での使い方
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
}
Javai++を忘れると無限ループになる。++iにしても動作は同じ。
3. do-while文での使い方
int i = 0;
do {
System.out.println(i);
++i;
} while (i < 5);
Java++iでもi++でも結果は同じ。- ループの「最後で増える」ことが大事。
4. 前置と後置の違いが出るケース
ループの条件や代入に直接使うと違いが出る。
例1: while文の条件に入れる
int i = 0;
while (i++ < 5) {
System.out.println(i);
}
Java- 1回目:
i++→ 0 を比較(条件は true)、その後 i=1 - 出力: 1, 2, 3, 4, 5
int i = 0;
while (++i < 5) {
System.out.println(i);
}
Java- 1回目:
++i→ 1 にしてから比較(条件は true) - 出力: 1, 2, 3, 4
👉 違い:
i++→ 5 まで出力++i→ 4 まで出力
例2: 配列アクセス
int[] arr = {10, 20, 30, 40};
int i = 0;
while (i < arr.length) {
System.out.println(arr[i++]); // 今の要素を使ってから i を増やす
}
Java- 出力: 10, 20, 30, 40
int[] arr = {10, 20, 30, 40};
int i = -1;
while (++i < arr.length) {
System.out.println(arr[i]); // 先に増やしてから使う
}
Java- 出力: 10, 20, 30, 40
👉 どちらも結果は同じになるが、初期値の設定が違う。
バグを避けるコツ
- for文のカウンタは i++ で統一(読みやすさ重視)
- 条件式に ++/– を埋め込まない(混乱のもと)
- 配列アクセスは i++ を使うと自然(「今の要素を使ってから次へ」)
💡 まとめると:
- ループの「増加部分」では
i++と++iの違いはほぼない。 - ただし「条件式」や「配列アクセス」に入れると挙動が変わる。
- 初心者は「ループの最後に i++」と覚えておけば安全。
