在 Java 中初始化二维数组?

Initialization of 2D Array in Java?

当我们在 java 中声明和初始化二维数组时,我有点困惑,如下所示

int arr[][]={{1,2,3,4},{4,3,2,1}};

这项工作是正确的,但是什么时候做下面给出的上述操作

int arr[2][4]={{1,2,3,4},{4,3,2,1}};

那为什么会报错呢?为什么我们不能固定行和列的大小,然后在同一条语句中赋值?我知道我们可以单独使用循环来做到这一点,比如 arr[0][0]=345; 等等,但为什么我们不能这样做呢?

int arr[4][2]={{1,2,3,4},{4,3,2,1}};

那是因为Java不是C语言
当你写int arr[][] = {{1, 2, 3, 4}, {4, 3, 2, 1}};的时候,你声明并初始化了一个2乘4的多维数组,相当于你提出的C语言初始化(int arr[2][4] = {{1, 2, 3, 4}, {4, 3, 2, 1}};)

在Java中,我们最好以Java风格的方式声明数组:

int[][] arr = {{1, 2, 3, 4}, {4, 3, 2, 1}};

其中 int[][] 只是一个类型标识符,我们不能指定大小。
而且,在Java中,我们可以初始化一个非矩形的二维数组:

int[][] arr = {{1, 2, 3, 4}, {4, 3}};

如果你想声明一个特定大小的数组,但不想一次指定它的所有值,唯一的解决方案是使用 new:

int[][] arr = new int[2][4];
arr[0][0] = 1;