以正确的方式复制数组

Bet*_*cks 4 java arrays

我从笔记中看到了两个关于复制数组的例子.

下面给出的第一个例子表明它不是复制数组的方法.但是,当我尝试运行代码时,它设法将所有值从array1复制到array2.

    int []array1={2,4,6,8,10};
    int []array2=array1;
    for(int x:array2){
        System.out.println(x);
    } 
Run Code Online (Sandbox Code Playgroud)

给出的第二个例子是说复制数组的正确方法.

int[] firstArray = {5, 10, 15, 20, 25 };
int[] secondArray = new int[5];
for (int i = 0; i < firstArray.length; i++)
  secondArray[i] = firstArray[i];
Run Code Online (Sandbox Code Playgroud)

我的问题是,这两个例子是否适合用于编码,或者实施例2是优选的.如果您是我的讲师,我将应用示例1 ..与示例2方法相比,我将获得更少的分数或者只是相同?

Era*_*ran 7

第一个例子不复制任何东西.它将原始数组的引用分配给新变量(array2),因此两个变量(array1array2)都引用相同的数组对象.

第二个示例实际上创建了第二个数组,并将原始数组的内容复制到它.

还有其他更简单的方法来复制数组.您可以使用Arrays.copyOfSystem.arraycopy代替通过for循环显式复制数组的元素.

int[] secondArray = Arrays.copyOf (firstArray, firstArray.length);
Run Code Online (Sandbox Code Playgroud)

要么

int[] secondArray = new int[firstArray.length];
System.arraycopy(firstArray, 0, secondArray, 0, firstArray.length);
Run Code Online (Sandbox Code Playgroud)