Java 如何访问二维阵列的第二部分

Java 如何访问二维阵列的第二部分,java,multidimensional-array,Java,Multidimensional Array,好的,我试着在二维数组中循环,以便从一个数组复制到另一个数组。我可以使用以下方法分配第一部分中的整数: array1[i] = array2[i]; 但我不能对其他部分做同样的操作,例如: array1[][j] = array2[][j]; //this doesn't compile 或 我怎样才能复制第二部分而不是第一部分 二维数组没有“第一部分”和“第二部分”。在声明为x[j][i]的数组中,有i行和j列 技术方面: Java没有真正的二维数组;它有数组的数组,因此x[行][col

好的,我试着在二维数组中循环,以便从一个数组复制到另一个数组。我可以使用以下方法分配第一部分中的整数:

array1[i] = array2[i];
但我不能对其他部分做同样的操作,例如:

array1[][j] = array2[][j];  //this doesn't compile


我怎样才能复制第二部分而不是第一部分

二维数组没有“第一部分”和“第二部分”。在声明为
x[j][i]
的数组中,有
i
行和
j

技术方面:

Java没有真正的二维数组;它有数组的数组,因此
x[行][cols]
x
行的数组
x
cols
元素的数组(即
x[行]
是数组的数组)

因此,当您执行
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];
    }
}
for(int row=0;row
你的意思还不太清楚。请记住,“2d数组”实际上只是数组的数组。您的第一段代码只是将
array2
中的“对嵌套数组的引用”复制到
array1

那么这里的“第二部分”是什么?是否尝试将“列”从一个数组复制到另一个数组?如果是这样,请记住:没有列。只有数组,数组的数组,等等。如果所有的“子阵列”恰好具有相同的大小,那就有点巧合了。没有什么可以阻止你这样做:

array1[0] = new int[100];
array1[1] = new int[5];

您可以考虑“行”(每个行都是一个数组),但在上面的示例中“列10”是什么意思?

尝试使用这个类来复制数组:

如果数组a和b的大小相同,这将逐个元素将b复制到元素中

for(int i = 0; i < rows; i++)
    for(int j = 0; j < columns; j++)
        a[j][i] = b[j][i];

a是数组的数组。[0]不是整数,而是整数数组。然而,[0][0]是第一个数组的第一个元素,使其成为int。

除了这里已经说过的,都是很好的答案之外,尝试通过两个单独的for循环遍历数组,一个for循环用于第一维,另一个用于第二维。如果您想要第二行中的所有“j”值,只需执行以下操作即可

for(int j = 0; j < yourJDimension; j++) {
    someValue = yourArray[1][j];
}
for(int j=0;j
这有助于显示数组的内容及其结构。此外,这里还有一个可能有些有用的快速链接:


tmfset似乎比我早了一点提供了类似的答案。仍然可以查看我提供的链接,了解2D数组是如何构造的,以及为什么复制“第二部分”是不可行的。
int a[5][5];
for(int j = 0; j < yourJDimension; j++) {
    someValue = yourArray[1][j];
}