Java 中的双数组初始化
2022-09-01 11:52:23
我正在读一本关于Java的书,并遇到了一个例子,其中一个双精度型数组以我以前从未见过的方式初始化。它是什么类型的初始化,还可以在哪里使用?
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 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;
}
}
您可以通过在右侧的大括号中写入数组的实际值来初始化数组,如下所示:
String[] strArr = { "one", "two", "three"};
int[] numArr = { 1, 2, 3};
以同样的方式,二维数组或数组的数组将数组作为值保存,因此:
String strArrayOfArrays = { {"a", "b", "c"}, {"one", "two", "three"} };
您的示例恰恰说明了这一点
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}
};
但是,还将执行数字的乘法,它与以下相同:
double m[][] = { {0, 0, 0, 0}, {0, 1, 2, 3}, {0, 2, 4, 6}, {0, 3, 6, 9} };