Javaに関する本を読んでいて、double 型の配列がこれまでに見たことのない方法で初期化されている例に出くわしました。それはどのようなタイプの初期化で、他にどこで使用できますか?
double m[][]={
{0*0,1*0,2*0,3*0},
{0*1,1*1,2*1,3*1},
{0*2,1*2,2*2,3*2},
{0*3,1*3,2*3,3*3}
};
Javaに関する本を読んでいて、double 型の配列がこれまでに見たことのない方法で初期化されている例に出くわしました。それはどのようなタイプの初期化で、他にどこで使用できますか?
double m[][]={
{0*0,1*0,2*0,3*0},
{0*1,1*1,2*1,3*1},
{0*2,1*2,2*2,3*2},
{0*3,1*3,2*3,3*3}
};
これは配列初期化構文であり、配列型の変数を宣言するときに右側でのみ使用できます。例:
int[] x = {1,2,3,4};
String[] y = {"a","b","c"};
変数宣言の RHS を使用していない場合は、代わりに配列コンストラクターを使用してください。
int[] x;
x = new int[]{1,2,3,4};
String[] y;
y = new String[]{"a","b","c"};
これらの宣言にはまったく同じ効果があります。新しい配列が割り当てられ、指定された内容で構築されます。
あなたの場合、プログラムでテーブルを指定する方が実際にはより明確になる可能性があります(繰り返しは少なくなりますが、少し簡潔ではありません):
double[][] m = new double[4][4];
for(int i=0; i<4; i++) {
for(int j=0; j<4; j++) {
m[i][j] = i*j;
}
}
double m[][]
多次元配列と呼ばれる配列の配列を宣言します。
m[0]
0*0,1*0,2*0,3*0 を含む、サイズが 4 の配列を指します。簡単な計算では、値が実際には 0,0,0,0 であることを示しています。
2 行目も 0,1,2,3 を含む 4 のサイズの配列です。
等々...
あなたの本のこの複数の形式は、0*0 が行 0 列 0、0*1 が行 0 列 1 などであることを示すためだったと思います。