【发布时间】:2012-03-13 13:34:18
【问题描述】:
我已经定义了一个int[][] 对象。因为它是一个对象,如果我将它作为参数发送给一个方法,它只会发送它的引用,因此对方法中数组的任何更改都会在主程序中影响它。所以我想在方法中克隆这个对象,但我不确定如何完成。
我在想这样的事情:
private void myMethod( int[][] array )
{
//Define our temporary array (clone)
int[][] newArray = new int[3][3];
//Go through the elements of the array
for .... row = 0; row < ..; row++
for ..... col = 0; col < ..; col++
//Copy individual elements from one array to another
newArray[row][col] = array[row][col];
}
但是上面的代码会将数组中的每个元素作为值复制到 newArray 中(所以...该项目的克隆),还是只是引用?
如果是这样,如何做到这一点。如果我要使用 ArrayLists 而不是 int[][] 对象,则有 clone() 方法或类似的方法,但我没有 int[][] 对象的方法:(
另外,如果我没记错的话,如果我在方法 newArray = array 中执行此操作,那将再次复制引用,因此两者都将指向同一个 int[][] 对象:(
附:我知道我可以测试一下,但我想和你们讨论一下,看看到底是什么。
【问题讨论】:
-
您为什么不对其进行测试,找出发生了什么,然后针对您不理解的任何问题提出澄清问题?
-
我不认为 int[][] 是一个对象,所以你不必担心。
-
@drgomesp:是的,所有数组都是引用类型。
-
@JonSkeet 很高兴知道,谢谢。
标签: java arrays reference multidimensional-array