繰り返し処理 (拡張for)
今回は繰り返し処理の1つである「拡張for文」についてみていきます。
「拡張for文」はリストやハッシュテーブルなどのデータ構造の各要素に対して、与えられた文の実行を繰り返すというループを記述するための文です。Java 5.0 で導入されています。
基本構文
for(変数 : リスト等) { { 繰り返し処理 }
この条件文は次のような手順で実行されます。 ※wikipedia引用
- 変数にリストの中のある要素への参照を代入する。
- 繰り返し処理を実行する。
- リストの全要素を参照し終わっていない場合は、
変数に未参照の要素を代入して文の実行へ戻る。
この形式は拡張for文などと呼び、Java 5.0 で導入されました。for文の特殊なものとして捉えられますが、他言語におけるforeach文に相当します。
サンプル
public class sample01 {
public static void main(String[] args) {
int data[] = {1,3,5,7,9};
for(int i : data){
System.out.print(i);
}
}
}
「拡張for文」は配列やコレクションの要素を順番に取り出して処理します。
3行目で配列を定義し値を代入しました。
4行目で配列から要素を順番に1つ取り出し変数i に代入しています。
拡張for文の処理である5行目は要素の数だけ繰り返されます。
break
public class sample01 {
public static void main(String[] args) {
int data[] = {1,3,5,7,9};
for(int i : data){
if(i == 5){
break;
}else{
System.out.print(i);
}
}
}
}
拡張for文で、全ての要素を繰り返す前にループから抜けるには「break文」を使います。繰り返し処理ではif文により変数i が5であるかどうか判定しています。ifの条件式を満たした場合は6行目でbreak文が処理され繰り返し処理から抜けます。
continue
public class sample01 {
public static void main(String[] args) {
int data[] = {1,3,5,7,9};
for(int i : data){
if(i == 5){
continue;
}
System.out.print(i);
}
}
}
break文はそこで繰り返し処理を終了しfor文から抜けました。continue文も処理は終了するのですがfor文から抜けるのではなく次の繰り返し処理に移ります。
サンプルでは変数i が5のとき6行目でcontinue文が実行されています。処理自体は終了されて8行目は処理されません。しかしfor文から抜けるのではなく次の繰り返し処理に移るので4行目の処理に移ります。結果として8行目が処理されない「5」だけが表示されていません。

