【发布时间】:2016-05-29 01:00:07
【问题描述】:
我的数组是这样的:
int[][] arr = new int[3][4];
我想忽略函数中数组发生的更改。如何按值传递给函数?
谢谢。
【问题讨论】:
我的数组是这样的:
int[][] arr = new int[3][4];
我想忽略函数中数组发生的更改。如何按值传递给函数?
谢谢。
【问题讨论】:
您不能按值传递数组。
保持原始数组不变的唯一方法是将数组的副本传递给您的方法。请注意,对于多维数组,您不能使用 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;
}
【讨论】:
在 Java 中,您不能按值传递数组(或任何 Object)。对Objects 的引用按值传递,使被调用的方法能够完全访问对象内的数据。
要解决此问题,请执行以下操作之一:
【讨论】: