Javaの拡張for文とは?配列を順番に取り出すfor-eachの書き方

本記事は、Schooの「Java入門 初級【2026年版】」第4回「繰り返し処理」を学んだあとに、通常のfor文と拡張for文をどう使い分けるかを整理したい方向けのステップアップ学習記事です。
ただし、Schooを受講していない方でも、Javaの基本を学び始めたばかりであれば読み進められる内容にしています。
Schoo コースページ:Java入門 初級【2026年版】
配列の中身を順番に表示するだけなら、拡張for文(for-each)を使うとインデックス番号を書かずに済みます。一方、何番目かを使うときは通常のfor文が必要です。
通常のfor文ではインデックスを使う
ファイル名: NameLoopExample.java
public class NameLoopExample {
public static void main(String[] args) {
String[] names = {"Alice", "Bob", "Carol"};
for (int i = 0; i < names.length; i++) {
System.out.println((i + 1) + "番目:" + names[i]);
}
}
}
実行結果
1番目:Alice 2番目:Bob 3番目:Carol
names[i] のiは配列の位置を表します。配列の最初の位置は0なので、条件は i < names.length と書きます。
拡張for文では値を直接受け取る
ファイル名: NameLoopExample.java
public class NameLoopExample {
public static void main(String[] args) {
String[] names = {"Alice", "Bob", "Carol"};
for (String name : names) {
System.out.println(name);
}
}
}
実行結果
Alice Bob Carol
for (String name : names) は、namesから要素を1つずつ取り出してnameに入れます。位置を使わず、すべての値を順番に扱うときに向いています。
1周ごとに値が変数へ入る流れ
拡張for文では、配列やリストの要素が1つずつ取り出され、コロンの左側に書いた変数へ入ります。次のツールで、names の値が name に移っていく流れを確認してみましょう。
String[] names = {"Alice", "Bob", "Carol"};
for (String name : names) {
System.out.println(name);
}
変数 name
配列 names
- names[0]“Alice”
- names[1]“Bob”
- names[2]“Carol”
まだループは始まっていません。次に進むと、先頭の要素が変数 name に入ります。
どちらを選ぶか
- 表示順に番号を付けたい、偶数番目だけを処理したい:通常のfor文
- 値をすべて同じように表示・合計したい:拡張for文
- 配列の長さが変わっても最後まで処理したい:
names.lengthまたは拡張for文
よくあるエラー
通常のfor文で i <= names.length と書くと、最後に存在しない names[names.length] を参照して ArrayIndexOutOfBoundsException になります。添字は最後の要素数より小さい間だけ使います。
確認問題
- 配列
int[] prices = {120, 250, 300};の値を拡張for文で順番に表示してください。 - names配列の各要素に「さん」を付けて表示してください。
- 配列の何番目かも表示したい場合、どちらのfor文を選びますか。
演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。
あわせて読みたい関連記事
まとめ
拡張for文は、配列の値を順番に取り出すだけの処理を簡潔に書けます。位置や番号が必要なときは通常のfor文を選び、i < 配列.length の境目を守りましょう。