多维数组java中的数组长度

Nab*_*a K 1 java multidimensional-array

我很难理解为什么一旦我声明了一个多维数组,如:

int t2[][] = new int[5][10] ;
Run Code Online (Sandbox Code Playgroud)

我仍然可以像这样更改数组的长度:

t2[0] = new int[12];
Run Code Online (Sandbox Code Playgroud)

我想一旦我们声明数组是一定长度我们就无法改变它.那怎么可能呢?

Joe*_*e C 5

从根本上说,二维数组只不过是一个数组数组.所以这:

int t2[][] = new int[5][10] ;
Run Code Online (Sandbox Code Playgroud)

真的是这样做的:

int t2[][] = new int[5][];
for (int i = 0; i < t2.length; i++)
{
    t2[i] = new int[10];
}
Run Code Online (Sandbox Code Playgroud)

因此,实际上,您可以t2[x]使用与分配任何其他数组元素相同的方式进行分配.

注意:您没有通过说明扩展数组的长度t2[0] = new int[12].您正在创建一个新的,这意味着如果您已完成任何分配t2[0][x],那么除非您自己复制它们,否则它们将丢失.