現在、黒本でJava Silverを勉強している。
その中で、2次元配列を作成する際は
int[][] array = new int[3][];
のように、2次元目の要素数を省略した形で宣言及び1次元目のインスタンス代入ができ、その後で2次元目の要素数を後から代入することもできるとわかった。そこで、参考書籍では以下のように1次元目の要素が持つ要素数を同一の値で代入していた。
array[0] = new int[3];
array[1] = new int[3];
array[2] = new int[3];
ならばこの時に1次元目の各要素が持つ2次元目の要素数を同一の値ではなくバラバラの値にしたら、それぞれが指定した値の数だけ要素数を持つことができるのか気になったため以下のコードで試してみた。
int[][] array = new int[3][];
array[0] = new int[3];
array[1] = new int[5];
array[2] = new int[7];
array[0][2] = 1;
array[1][4] = 2;
array[2][6] = 3;
System.out.println(array[0][2]);
System.out.println(array[1][4]);
System.out.println(array[2][6]);
実行結果
1
2
3
試してみたところ問題なく動作したことから、Javaでは2次元配列の宣言時に2次元目の要素数を省略し後から代入する形であれば、1次元目の要素が持つ2次元目の要素数を各要素によって違う数にできることがわかった。
2024/11/19 追記
そういえば初期化子を用いる方法でも、1次元目の要素が持つ2次元目の要素数はそれぞれで変えられるのであった。
int[][] array = { { 1,2,3 }, { 4,5,6,7 }, { 8,9,10,11,12 } };
System.out.println(array[0][2]);
System.out.println(array[1][3]);
System.out.println(array[2][4]);
実行結果
3
7
12
全然初めて知ることなどではなかったので、タイトルも修正。
参考文献:
- 書籍名: 『徹底攻略Java SE 11 Silver問題集[1Z0-815]対応』
- 著者: 志賀 澄人 著/株式会社ソキウス・ジャパン 編
- 出版元: インプレス
- リンク: https://book.impress.co.jp/books/1118101186