はじめに
2次元配列に1次元配列を格納しようとしたが、理解できていない事が分かった。
忘れてもすぐに思い出せるよう分かった事をまとめた。
(メモリの番地が格納されている事がポイントだと思います。)
イメージ
例えば 2行3列の配列 int mat[][] = new int[2][3]; を作成した場合
3列の配列が2つ作成され、それぞれの先頭の番地がmat[0]、mat[1]に格納される。
別の見方をするとmat[0]には、1行目の先頭の番地が格納されている。
(例の1行目はmat[0][0]、mat[0][1]、mat[0][2])
lengthの結果
mat.lengthは、行数を表す。
mat[0].lengthは、0行目の列数を表す。
サンプルコード
2jigen.java
//2次元配列の初期化
char test[][] = {{'a','b','c','d'},{'e','f','g','h'}};
char toTest[][] = {{'1','2','3','4'},{'5','6','7','8'}};
//testの1行目にtoTestの1行目を格納
//toTest1行目の先頭番地をtest1行目に格納している。
test[0] = toTest[0];
//testの1行目を出力
for (int i=0; i<test[0].length; i++) {
System.out.println(test[0][i]);
}
//testの行数を出力
System.out.println("testの行数 = test.length = "+test.length);
//testの列数を出力
System.out.println("testの列数 = test[0].length = "+test[0].length);
1
2
3
4
testの行数 = test.length = 2
testの列数 = test[0].length = 4
参考文献
スッキリわかる Java入門