LoginSignup
1
0

More than 1 year has passed since last update.

【Java】拡張for文を入れ子的に2度使用する際の挙動を調べました。

Posted at

 paizaラーニングで2、3日前からJava入門編を始めた完全初心者が書いておりますゆえ、お手柔らかにお願いします。

なぜ書こうと思ったか

 Java入門編:5の2次元配列を学習していたところ、いきなり拡張for文を2回使う手法がさらっと出てきてびっくりしたからです。

コード内でやること


①teamsと名付けた二次元配列に、それぞれ{a,b,c}、{d,e,f}、{g,h,i}を入れ、
②拡張for文を使って、それらの中身を全部printlnにて出力するということをします。
③その際に、拡張for文の中で、配列がどこからどれだけ取り出され、どう動くのかを出力結果を解釈して、知ろうと思います。
拡張for文
public class Main {
    public static void main(String[] args) {

        //2次元配列に中身を入れる
        String[][] teams = {{"a","b","c"},{"d","e","f"},{"g","h","i"}};

    for(String[] teams1 : teams){
        
        //1周目でaから最後のiまでが読み込まれるかの確認
        System.out.println("長さは" + teams1.length);
        
        System.out.println(teams1[0] + teams1[1] + teams1[2]);
        System.out.println("一回目ループ終わり");
        /*ここまでで出力された結果が「長さ3、abc」だったので、
        実際は、1つ目の{}の要素のみが読み込まれることが分かりました。*/
        
        for(String teams2 : teams1){
            System.out.println(teams2);;
            System.out.println("二回目ループ終わり");
        /*以上の、拡張forの中の拡張forでは、teams1={a,b,c}という1次元配列(?)を
        一回ずつ取り出し、Stringに変えることが分かりました。
        a,b,cが同時に出力されると思っていましたが、そうではなく
        一回ずつ出力される状態が3回、つまりteams1の配列の中身の多さ分
        繰り返されることが分かりました。*/
            
        }
        //System.out.println("二回目ループ抜け");
        System.out.println("=========");
    }

出力結果

内容は以上なのですが、一応出力結果も書いておきます。
ループ開始
abc
一回目ループ終わり
a
二回目ループ終わり
b
二回目ループ終わり
c
二回目ループ終わり
=========
長さは3
ループ開始
def
一回目ループ終わり
d
二回目ループ終わり
e
二回目ループ終わり
f
二回目ループ終わり
=========
長さは3
ループ開始
ghi
一回目ループ終わり
g
二回目ループ終わり
h
二回目ループ終わり
i
二回目ループ終わり
=========

以上です。ご拝読ありがとうございました!

参考サイト
"Java入門編5: 2次元配列を理解しよう".paizaラーニング.https://paiza.jp/works/java/primer(2022年10月17日閲覧)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0