for文

Javaのfor文には「基本for文」と「拡張for文」がある。

執筆時バージョン
Java

Java SE 8

int[] numbers = { 10, 60, 88 };
for (int i = 0; i < numbers.length; i++) {
  int number = numbers[i];
  System.out.println("numbers[" + i + "]:" + number);
}

繰り返しを記述するためにJavaではfor文とwhile文とdo文があるうちの一つ。書式が若干違えど、最近の言語であればほとんどの言語にある。while文との違いは初期化コードや更新コードを()内に記述できるところぐらい。

Java SE 8からはfor文ではなく、ストリームでなるべく記述した方がいい。

基本for文

拡張for文ができてからはあまり使う必要がなくなっている。コレクションなどのループは拡張for文を利用するべき。

for (①初期化コード ; ②評価式 ;  ④更新コード) {
     ③命令;
}

疑似コードで書くとこんなかんじ。どの順番で実行されるかをしっかり把握することが肝要(とくに②評価式がどの順で評価されるのか)。

処理の流れ
  1. ①初期化コードが実行される

  2. ②評価式が評価される

    • falseの場合

      • 終了

    • trueの場合

      • ③命令が実行される

      • ④更新コードが実行される

      • 「2.②評価式が評価される」へ行く

気をつけるのは②評価式が先に実行されるところ。②評価式の書き方によってはいきなりfalseとなって③命令が一度も実行されないことがある。

拡張for文

for (型 変数名 : Iterable(コレクション) or 配列) {
     命令;
}

Java SE 1.5から利用可能になったので「拡張」とついているがいわゆるfor-each文。基本for文に比べてオブジェクトを変数に代入する処理をいちいち書かなくていいのがうれしい。

Appendix A: 改訂履歴

  • v1.0, 2017-04-30: 初稿