我想复制一个数组。通常,我会做这样的事情。
int[] a1 = {1, 2, 3};
int[] a2 = a1
但是最近,我看到我的教授是这样做的:
int[] ar1 = {1, 2, 3};
int[] ar2 = Arrays.copyOf(ar1);
一种方式比另一种方式有优势吗?主要区别是什么?
最佳答案
在第一种情况下,两个数组都指向同一个对象。因此,修改其中一个也会修改另一个。
int[] a1 = {1, 2, 3};
int[] a2 = a1
a1[0] = 15;
System.out.println(a2[0]); //15
在第二种情况下,会创建一个真实副本,因此修改一个副本不会影响另一个副本。
int[] a1 = {1, 2, 3};
int[] a2 = Arrays.copyOf(a1, 3);
a1[0] = 15;
System.out.println(a2[0]); //1
如果您想了解有关 Java 中复制的详细信息,请参阅 How do I copy an object in Java? 的第二个答案
关于java - Java 中复制数组的这些方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33715275/