第6回では条件分岐(switch文)についての学習をしました。今回は繰り返し処理(for文、foreach文)について解説していきます。

繰り返し処理には、for文やwhile文などがあります。同じ処理を何度も繰り返す場合に使用することで、すっきりしたプログラムを記述することができます。

for文

指定した回数だけ処理を繰り返す場合に、for文を使用します。

  • for文の書式

for (初期化式; 条件式; 変化式){
  実行する処理1;
  実行する処理2;
  ……
}

条件式はif文と同じように関係演算子や論理演算子などを使用することができます。for文では、条件式を評価した結果がtrue(真)だった場合、{ } のブロック内の処理を実行します。ブロック内の処理が終わると、for文の最初に戻って条件式を評価し、結果がtrue(真)のあいだはブロック内の処理を繰り返し実行します。条件式を評価した結果がfalse(偽)だった場合に、for文を終了します。

また、ブロック内の処理がひとつだった場合、{ } を省略することもできます。

  • for文でブロック内の処理がひとつだった場合の書式

for (初期化式; 条件式; 変化式)
  実行する処理;

この場合、if文のときと同じく、「実行する処理」の下に記述した処理は、forブロック内のものとは判断されないので注意してください。

初期化式と変化式

for文では初期化式を記述することができます。初期化式は、for文が実行される一番最初に一度だけ実行され、条件式で使用する変数の宣言と初期化をすることができます。また、for文では変化式も記述することができます。変化式は処理が繰り返されるたびに実行され、条件式で使用する変数の値を変化させるための式を記述します。

  • 初期化式と変化式を記述しないfor文の例

int num = 0; // 変数を初期化
int count = 0; // 変数を初期化

for (; count < 5;){ // 「count」が5より小さい場合
  num += 1;
  count++; // 「count」に1を足す
}

System.out.println(num); // 「num」の値を表示

上記では、for文の前に、まず「num」とfor文の条件式で使用する「count」を初期化しています。そして、for文の条件式「count < 5」を評価し、結果がtrue(真)の場合は「num」に1を足したものを「num」に代入します。条件式の値に変化がない場合、無限に処理を繰り返してしまうので「count」に1を足します。この処理を「count」の値が5になるまで繰り返し、「count」の値が5になったらfor文を終了します。最後に「num」の値を表示します。

  • 初期化式と変化式を記述したfor文の例

int num = 0; // 変数の初期化

for (int count = 0; count < 5; count++){ // 初期化式、条件式、変化式が記述されている
  num += 1;
}

System.out.println(num); // 「num」の値を表示

この例では、for文の初期化式の箇所で変数の宣言と初期化、変化式の箇所に変数の値を変化させる式を記述しています。

foreach文

先ほどのfor文は、ほかの言語でも使用されている形式の一般的なfor文ですが、Java 5.0からは拡張for文(foreach文)も使えるようになりました。この拡張for文(foreach文)は、配列やコレクションと呼ばれる複数の要素を、より簡単・安全に扱うことができます(配列やコレクションについては今後の記事で解説します)。

  • foreach文の書式

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

for文と似ていますが、( ) 内はforeach文独自のものとなっています。foreach文では、配列またはコレクションの要素を格納する変数と、繰り返しの対象となる配列またはコレクションをコロン(:)で区切って記述します。foreach文の処理が実行される回数は配列またはコレクションの要素数になるので、for文のときに使用した条件式や変化式は必要ありません。

  • foreach文の例

int[] numArray = {12, 78, 55}; // 配列の初期化

for (int num: numArray){
  System.out.println(num); // 「num」を表示
}

上記では、最初にint型を格納する配列「numArray」を初期化しています。次にforeach文に入り、numArrayの先頭要素(値は12)をnumに代入してSystem.out.printlnで表示します。そのあと、numArrayの最後の要素まで繰り返し、foreach文が終了します。

なお、通常のfor文で上記の処理を記述した場合、次のようになります。

int[] numArray = {12, 78, 55}; // 配列の初期化

for (int i = 0; i < numArray.length; i++){
  System.out.println(numArray[i]); // 「numArray[i]」を表示
}

foreach文は、対象の配列やコレクションにおいて、すべての要素を順番に取得して処理したい場合(配列やコレクションの単純な精査など)によく使用されます。状況に応じてfor文とうまく使い分けてください。


今回は繰り返し処理(for文、foreach文)について解説しました。次回もJavaの基本構文について解説していく予定です。

執筆者紹介

八重桜雅子(YAEZAKURA Masako)

以前はシステム開発会社で約8年間働いていました。JavaやJavaScriptなどのWeb系の技術をよく使用していました。