Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

二次元配列とイニシャライザ

二次元配列について、下記???はコンパイル、実行ともに問題ないのですが、?だけがコンパイルエラーになるのはなぜか教えていただけませんでしょうか。

        
1(コンパイルOK)
 int[][] a = {{1,2,3},{4,5,6}};
        
2(コンパイルOK)   
int[][] a = new int[2][3];
int[] aryA = new int[3];
int[] aryB = new int[3];
a[0] = aryA;
a[1] = aryB;

3 (コンパイルOK)
int[][] a = new int[2][3];
int[] aryA = {1,2,3};
int[] aryB = {4,5,6};
a[0] = aryA;
a[1] = aryB;

4 コンパイルエラー
int[][] a = new int[2][3];
a[0] = {1,2,3};
a[1] = {4,5,6};

2

回答

83164

閲覧

2件の回答

評価

0

仕様です。
http://docs.oracle.com/javase/specs/jls/se7/html/jls-10.html#jls-10.6
http://www.y-adagio.com/public/standards/tr_javalang2/arrays.doc.html#11358
左辺が配列の宣言ではないので以下のようにする必要があります。
a[0] = new int[]{1,2,3};

評価

0

イニシャライザは配列の宣言がないといけないのですね。勉強になりました。リンクまではっていただいてありがとうございます

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。