for文の2重構造


スッキリわかるJava入門にてJavaの勉強中です。
その中で出てきた項目についての備忘録。

for文の中にfor文が入っている場合の処理

Main.java
public class Main {

    public static void main(String[] args) {

        for (int i = 1; i < 4; i++) {
          //↓中の繰り返しが終わると「外側ループi周目終わり」を出力する処理に移行し、外側の繰り返しが1つ進む
            for(int j = 1; j < 4; j++) {
                System.out.println("外側ループ" + i + "周目" + "内側ループ" + j + "周目"); 
            }

            System.out.println("外側ループ" + i + "周目終わり"); 
        }
    }

}

処理結果は以下の通り。

外側ループ1周目内側ループ1周目
外側ループ1周目内側ループ2周目
外側ループ1周目内側ループ3周目
外側ループ1周目終わり
外側ループ2周目内側ループ1周目
外側ループ2周目内側ループ2周目
外側ループ2周目内側ループ3周目
外側ループ2周目終わり
外側ループ3周目内側ループ1周目
外側ループ3周目内側ループ2周目
外側ループ3周目内側ループ3周目
外側ループ3周目終わり

処理順としては、
1. 外側ループ開始
2. 内側ループを設定した回数繰り返す
3. 内側の処理が終わる
4. 内側の処理を抜け、最後の行の出力を行う。外側ループの処理が終わる。1に戻る
5. 1〜4を外側ループで設定した回数繰り返す

落ち着いて考えるとどうってこと無いんですが、初見で「!?」となったのでメモ。