技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

java:for文の様々な書き方

私が教育している新人のfor文に対する理解が不十分であったため&私自身拡張for文についてつい最近読んだ本で初めて知ったので、この記事を作成しました。
私が言いたいことは以下のソースコードに全て記載しています。
 
【サンプルコード】

package lesson1;

public class Main3 {
    public static void main (String args){
        String array
= {"one","two","three","four","five"};

        // for文の書き方について、5つのCaseを挙げる。
        // 何れのCaseも処理結果は同じになる。

        // Case1:普通のfor文
        // 各々の式は{}内の処理を行う前に実行される
        // 初期化式→条件式→変化式の順番で実行される
        // 「int i = 0」は初期化式(1回目の繰り返しで実行)
        // 「i < array.length」は条件式(満たさなくなると繰り返しを抜ける)
        // 「i++」は変化式(2回目以降の繰り返しで実行)
        System.out.println("【Case1:普通のfor文】");
        for (int i = 0; i < array.length; i++) {
            System.out.println("Case1: " + array[i]);
        }

        // Case2:初期化式を省略したfor文
        // ループカウンタ(iに相当するもの)を別途定義する場合に使用
        System.out.println("【Case2:初期化式を省略したfor文】");
        int ix = 0;
        for (; ix < array.length; ix++) {
            System.out.println("Case2: " + array[ix]);
        }

        // Case3:条件式を省略したfor文
        // 処理を抜ける処理を別途記述する場合に使用
        System.out.println("【Case3:条件式を省略したfor文】");
        for (int i = 0;; i++) {
            if(i >= array.length) {
                break;
            }
            System.out.println("Case3: " + array[i]);
        }

        // Case4:変化式を省略したfor文
        // ループカウンタを増やす処理を別途記述する場合に使用
        System.out.println("【Case4:変化式を省略したfor文】");
        for (int i = 0; i < array.length;) {
            System.out.println("Case4: " + array[i]);
            i++;
        }

        // Case5:拡張for文
        // Java5より使用可能になった
        // Iterableのサブタイプ(配列やコレクション)に対して使用する
        // 簡潔な書き方で全ての要素を取得することができる
        System.out.println("【Case5:拡張for文】");
        for (String str : array) {
            System.out.println("Case5: " + str);
        }
    }
}
 
【実行結果】

【Case1:普通のfor文】
Case1: one
Case1: two
Case1: three
Case1: four
Case1: five
【Case2:初期化式を省略したfor文】
Case2: one
Case2: two
Case2: three
Case2: four
Case2: five
【Case3:条件式を省略したfor文】
Case3: one
Case3: two
Case3: three
Case3: four
Case3: five
【Case4:変化式を省略したfor文】
Case4: one
Case4: two
Case4: three
Case4: four
Case4: five
【Case5:拡張for文】
Case5: one
Case5: two
Case5: three
Case5: four
Case5: five