for-eachループを使うと、コレクションの各要素に対してコードのブロックを実行できます。
ドキュメントによっては(例えばOracleのドキュメントなど)、これを拡張forループと呼んでいます。
一般的な構文は次のとおりです。
for(declaration: collection) {
body;
}
declarationは、コレクションから取り出した値を受け取る変数を宣言します。
collectionは、ループ変数に代入される値を保持する配列またはコレクションです。
bodyには、コレクション内の各値に対して1回ずつ実行される文を書きます。
例えば、次のようになります。
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for(char vowel: vowels) {
System.out.println(vowel);
}
これを実行すると、次のように出力されます。
a
e
i
o
u
一般に、for-eachループは次の理由からforループよりも好まれます。
for-eachループは、_すべての_値に対して繰り返し処理を行うことが保証されています。for-eachループはより_宣言的_で、コードが_どのように_行うかではなく_何を_行うかを伝えてくれます。for-eachループは間違いが起きにくいのに対し、forループではオフバイワンエラーが起こりがちです(<と<=のどちらを使うかを考えてみてください)。for-eachループは、インデックスを使って要素にアクセスできないものを含め、すべてのコレクション型で使えます(例えばSet)。