Java中的双数组初始化

Pra*_*eek 23 java arrays double initialization

我正在阅读一本关于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}
};
Run Code Online (Sandbox Code Playgroud)

nne*_*neo 27

这是数组初始化程序语法,它只能在声明数组类型的变量时在右侧使用.例:

int[] x = {1,2,3,4};
String y = {"a","b","c"};
Run Code Online (Sandbox Code Playgroud)

如果您不在变量声明的RHS上,请使用数组构造函数:

int[] x;
x = new int[]{1,2,3,4};
String y;
y = new String[]{"a","b","c"};
Run Code Online (Sandbox Code Playgroud)

这些声明具有完全相同的效果:使用指定的内容分配和构造新数组.

在您的情况下,以编程方式指定表可能实际上更清晰(重复性更低,但更简洁一点):

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;
    }
}
Run Code Online (Sandbox Code Playgroud)


sar*_*ara 1

double m[][]声明一个数组的数组,即所谓的多维数组。

m[0]指向一个大小为 4 的数组,包含 0*0,1*0,2*0,3*0。简单的数学计算表明这些值实际上是 0,0,0,0。

第二行也是四个大小的数组,包含0,1,2,3。

等等...

我猜你书中的这种多重格式是为了表明 0*0 是第 0 行第 0 列,0*1 是第 0 行第 1 列,依此类推。