改变已设置为相等的对象
Altering objects that have been set equal
我正在设置一个数组等于另一个数组。
假设数组 B = 数组 C。
那么,如果我对数组 B 进行操作,改变它的值,C 是否也会改变?
我想说绝对不是,但我脑袋放屁,我觉得我的代码中正在发生的事情。
当您将一个数组分配给另一个数组时,该数组将保留引用,因此如果您更改一个数组中的值,那么它肯定会更改另一个数组的值。
就像您的示例数组 B = 数组 C。B 将保存对数组 C 的引用。因此数组 B 中的任何更改都将反映在数组 C 中。
是的,它们被改变了。
数组是一个对象,所以你只分配引用,分配后"array B = array C."两个变量将持有相同的引用。结果你将有一个对象和两个引用
更新
对于"real copy"你需要使用System.arraycopy()
或Arrays.copyOf()
int[] arrayC = {1,2,3,4,5,6,7,8,9,10};
int[] arrayB = new int[arrayC.length];
System.arraycopy(arrayC, 0, arrayB, 0, arrayC.length );
我正在设置一个数组等于另一个数组。
假设数组 B = 数组 C。
那么,如果我对数组 B 进行操作,改变它的值,C 是否也会改变?
我想说绝对不是,但我脑袋放屁,我觉得我的代码中正在发生的事情。
当您将一个数组分配给另一个数组时,该数组将保留引用,因此如果您更改一个数组中的值,那么它肯定会更改另一个数组的值。
就像您的示例数组 B = 数组 C。B 将保存对数组 C 的引用。因此数组 B 中的任何更改都将反映在数组 C 中。
是的,它们被改变了。
数组是一个对象,所以你只分配引用,分配后"array B = array C."两个变量将持有相同的引用。结果你将有一个对象和两个引用
更新
对于"real copy"你需要使用System.arraycopy()
或Arrays.copyOf()
int[] arrayC = {1,2,3,4,5,6,7,8,9,10};
int[] arrayB = new int[arrayC.length];
System.arraycopy(arrayC, 0, arrayB, 0, arrayC.length );