拡張for文(for-each文)

広告

for文の少し違った使い方として拡張for文(for-each文)という使い方ができるようになりました。これは配列やコレクションと呼ばれる複数の要素を持っているものから全ての要素に含まれる値を順に取り出して処理するために使われます。配列やコレクションについては今後別のページで詳しく解説しますのでこの時点ではそういった文が用意されていることだけ覚えておいて下さい。

書式は次の通りです。

for (データ型 変数名: コレクション){
  実行する文1;
  実行する文2;
  ...
}

以前に解説したfor文と同じですが括弧の中はまったく別のものとなっています。この形式では値を順に取り出したい配列やコレクションと、取り出した値を格納する変数の二つをセミコロン(;)ではなくコロン(:)で区切って記述します。繰り返される回数は配列やコレクションに含まれている値の数だけなので条件式は必要ありませんし変化式も必要ありません。

実際には次のような使い方となります。

int data[] = {85, 72, 89};

for (int seiseki: data){
  System.out.println(seiseki);
}

この場合は次のような処理の流れとなります。

 1)配列dataを宣言し初期化
 2)配列から要素に含まれる値を1つ取り出し変数seisekiに代入
 3)変数seisekiを出力
 4)配列から要素に含まれる値を1つ取り出し変数seisekiに代入
 5)変数seisekiを出力
 6)配列から要素に含まれる値を1つ取り出し変数seisekiに代入
 7)変数seisekiを出力
 8)配列から全ての値を取り出したので繰り返しを終了

今回は配列の3つの要素がありますので、3つの要素に含まれる値を取り出しながらブロック内の処理を行っていきます。

なおfor-each文は比較的新しく用意された文で、以前であれば次のように記述していました。

int data[] = {85, 72, 89};

for (int i = 0; i < data.length; i++){
  System.out.println(data[i]);
}

全ての要素の合計を取得したい場合など取り出す順序に関係なく全ての要素を1回ずつ取り出したい場合に便利な文です。

サンプル

では簡単な例で試しておきます。

JSample8_1.java

class JSample8_1{
  public static void main(String args[]){
    int data[] = {85, 72, 89, 54, 91};

    for (int seiseki: data){
      System.out.println(seiseki);
    }
  }
}

コンパイル後に実行すると次のように表示されます。

p8-1

( Written by Tatsuo Ikura )