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日閲覧)