aa[0]
は配列の配列であるため、プログラムの引数は配列に格納されaa
ます。
したがって、プログラムはメソッドの引数を実際に繰り返しmain
ます。印刷します1, 2, 3
(気にしませんaa[1]
)。
int x;
String aa[][]= new String[2][2]; // create an matrix of size 2x2
aa[0]=a; // store the program arguments into the first row of aa
x=aa[0].length; // store the length of aa[0] which is the same as a
for(int y=0;y<x;y++) // iterate over aa[0] which is the same as a
System.out.print(" "+aa[0][y]);
機能的には次のものと同じです。
for (int i = 0; i < a.length; ++i)
System.out.print(" " + a[i]);
// or even
for (String str: a)
System.out.print(" " + str);
編集
それ以来彼の答えを削除した誰かが述べたように(あなたがそれを削除している間、私はそれを賛成していました)、java多次元配列はギザギザ配列です、これは多次元配列がである必要がないことを意味します同じサイズの場合、行1と行2に2つの異なるサイズを設定できます。つまり、aを宣言してString[2][2]
も、行を再割り当てするときに行を2列に制限する必要があるという意味ではありません。
String[][] ma = new String[3][2];
ma[0] = new String[] {"a", "b"};
ma[1] = new String[] {"a", "b", "c", "d"}; // valid
String[] foo = new String {"1", "3", "33", "e", "ff", "eee"};
ma[2] = foo; // valid also