My Array就是这样:
int[][] arr = new int[3][4];
我想解除函数中我的数组发生的变化。如何通过值将它传递给函数?
谢谢。
答案 0 :(得分:1)
您无法按值传递数组。
保持原始数组不变的唯一方法是将数组的副本传递给您的方法。请注意,对于多维数组,您不能使用Arrays.copyOf
来创建该副本,因为它执行浅拷贝,因此内部数组不会重复(它们的引用将被复制)。
public static int[][] cloneArray(int[][] src) {
int length = src.length;
int[][] target = new int[length][src[0].length];
for (int i = 0; i < length; i++) {
System.arraycopy(src[i], 0, target[i], 0, src[i].length);
}
return target;
}
答案 1 :(得分:1)
在Java中,您无法按值传递数组(或任何Object
)。对Object
的引用按值传递,使该方法被称为对对象内数据的完全访问权。
要解决此问题,请执行以下操作之一: