ArrayList など)の全要素に対して、先頭から順番に繰り返し処理を行うために最適化された簡潔なループ文法です。
Java SE 5で導入された機能であり、従来の for 文のように要素数(length や size())の取得やインデックス変数(i など)の管理を行う必要がありません。
「指定した集合から要素を1つずつ取り出して変数に代入し、要素が無くなるまで繰り返す」という直感的な記述が可能であり、インデックスの指定間違いによる ArrayIndexOutOfBoundsException などのバグを構造的に防止することができます。