更改数组中的值会更改处理中其他数组中的值

Altering a value in array changes value in other array in Processing

我知道这个问题之前有人问过 Java,但我目前正在尝试处理,none 的解决方案对我有用。我有两个数组:

int[][] array1 = {{1,2,3},{4,5,6}};
int[][] array2 = {{7,8,9},{10,11,12}};
arrayCopy(array1,array2);
array2[0][1] = 100;
println(array1[0][1]);
//prints 100 despite never altering it

我尝试过的事情:

//For Loop
for(int i = 0; i < array1.length; i++){
  array2[i] = array1[i];
}

//Cloning
array2 = array1.clone();

如果您参考 arrayCopy 函数的文档,它说

If arrayCopy is used with a two (or three or more) dimensional array, it will only copy the references at the first level, because a two dimensional array is simply an "array of arrays".

所以基本上修改 array2 中的任何数组也会修改 array1 中的相应数组。但是,如果您使用一维数组,情况就不会如此。

如果您希望将 array1 的每个数组复制到 array2 而没有任何上述行为,那么您需要创建一个嵌套的 for 循环来遍历每个数组array1 的元素(锯齿状数组)并将其内容(整数)复制到另一个数组中。

示例:

int[][] sequence = {{1, 2, 3}, 
                    {4, 5, 6}};
int[][] accumulator = new int[sequence.length][3];

for (int i = 0; i < sequence.length; i++) 
    for (int j = 0; j < sequence[i].length; j++) 
        accumulator[i][j] = sequence[i][j];

作为旁注,避免将变量命名为 array1array2 等。这使得识别特定变量的用途变得非常困难。一个变量应该通过阅读说出它的作用或目的。