我正在阅读一本关于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"};
如果您不在变量声明的右手边,可以使用数组构造函数代替:
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 = new double[][] { new double[] { 0 * 0, 1 * 0, 2 * 0, 3 * 0 }, new double[] { 0 * 1, 1 * 1, 2 * 1, 3 * 1 }, new double[] { 0 * 2, 1 * 2, 2 * 2, 3 * 2 }, new double[] { 0 * 3, 1 * 3, 2 * 3, 3 * 3 } };
- Tom您可以通过在大括号中写入它所包含的实际值来初始化数组,如下:
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} };
List<Double> y = Arrays.asList(null, 1.0, 2.0);
Double x = y.get(1);
double m[][]
声明了一个数组的数组,也称为多维数组。
m[0]
指向大小为四的数组,包含0 * 0,1 * 0,2 * 0,3 * 0。简单的数学计算显示这些值实际上是0,0,0,0。
第二行也是大小为四的数组,包含0,1,2,3。
依此类推...
我猜你书中的这种多重格式是为了说明0 * 0是第0行第0列,0 * 1是第0行第1列,以此类推。
.
应该是,
。 - nachokk