0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Javaの2次元配列で、2次元目の要素数を後から代入する形でも各要素によって違う数にできることを初めて知った

Last updated at Posted at 2024-11-18

現在、黒本で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
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?