如何访问2d数组的第二部分

use*_*309 2 java multidimensional-array

好吧我试图循环通过二维数组从一个复制到另一个.我可以使用以下方法分配第一部分的整数:

array1[i] = array2[i];
Run Code Online (Sandbox Code Playgroud)

但我不能对其他部分做同样的事情,例如:

array1[][j] = array2[][j];  //this doesn't compile
Run Code Online (Sandbox Code Playgroud)

要么

array1[0]j = array2[0][j];  //creates run time error
Run Code Online (Sandbox Code Playgroud)

我怎样才能明确地复制第二部分而不是第一部分?

Jon*_*han 6

没有二维数组的"第一部分"和"第二部分".声明了数组中的i行和jx[j][i].

现在为技术方面:

Java没有真正的二维数组; 它有数组的数组,所以x[rows][cols]是一个数组xrows数组cols元素(即x[rows]是一个数组的数组).

因此,当您执行时array1[i] = array2[i],您正在复制对第二个数组中列数组的引用.

但是没有办法做镜像 - 你不能复制对行的引用但保留列值,因为行数组 x.

如果您正在寻找"深层复制",可以手动执行以下操作:

for (int row = 0; row < array1.length; row++) {
    for (int col = 0; col < array1[row].length; col++) {
        array2[row][col] = array1[row][col];
    }
}
Run Code Online (Sandbox Code Playgroud)