今回は、別の配列を使って2次元配列を初期化したり、代入についての Tips です。
その場合に、注意が必要な「参照のコピー」についても触れます。
//3教科の5人の点数
int[][] kyoka3 = { { 92,98,76,52,81 }, { 75,89,77,68,84 }, { 96,73,91,88,64 } };
配列要素の値を { } で囲んで、配列の配列とする書き方で、以前のTips でも紹介しました。
【 書き方例(1) 】 //各教科の点数配列 int[] kokugo = { 92,98,76,52,81 }; int[] sugaku = { 75,89,77,68,84 }; int[] eigo = { 96,73,91,88,64 }; //配列名を指定して初期化する int[][] kyoka3 = { kokugo, sugaku, eigo };
【 書き方例(2) 】
int[][] kyoka3 = new int[3][];
//配列を各次元へ代入する
kyoka3[0] = kokugo;
kyoka3[1] = sugaku;
kyoka3[2] = eigo;
kyoka3[2][0] = 100; とすると初期化時に指定した元の配列eigo[0]も100点に変わり、 kokugu[0] = 0; とすると、kyoka3[0][0]も0に変わります。
これは、参照のコピーをしているだけだからです。
コピー元もコピー先も同じ実体を参照することになるので、どちらかの値を書き換えると、もう一方から見る値も変わります。そのことに注意して使いましょう。
int[][] kyoka3 = new int[3][];
//別の場所に用意された実体を参照するようになる
kyoka3[0] = new int[kokugo.length];
for( int i = 0; i < kokugo.length; i++ )
kyoka3[0][i] = kokugo[i];
[ 関連記事 ] 2次元配列の使用例, 2次元配列の初期化、メソッドに渡す例