在Java中,当将一个引用数组赋值给另一个变量时,原始变量和新变量将引用相同的数组对象。如果想要重新分配原始变量,可以使用Arrays.copyOf
方法创建一个新的数组,并将其赋给原始变量。
下面是一个示例代码:
public class Main {
public static void main(String[] args) {
// 原始数组
int[] array1 = {1, 2, 3, 4, 5};
// 将原始数组赋值给新变量
int[] array2 = array1;
// 修改新变量的值
array2[0] = 6;
// 输出原始数组的值
System.out.println(Arrays.toString(array1)); // 输出 [6, 2, 3, 4, 5]
// 重新分配原始变量
array1 = Arrays.copyOf(array1, array1.length);
// 修改新变量的值
array2[1] = 7;
// 输出原始数组的值
System.out.println(Arrays.toString(array1)); // 输出 [6, 2, 3, 4, 5]
}
}
在上面的示例中,首先将原始数组 array1
赋值给新变量 array2
。然后修改 array2
的第一个元素,并输出 array1
的值,可以看到 array1
的值也被修改了。接着,使用 Arrays.copyOf
方法创建一个新的数组,并将其赋给 array1
,然后再修改 array2
的第二个元素,并输出 array1
的值,可以看到此时 array1
的值不再被修改。这就是通过重新分配原始变量的方法来解决重新赋值引用数组时的问题。