Arrays.copyOf(arr,5);为什么不能改变数组

时间:2017-07-22 02:21:25

标签: java

int[] arr = {2,6,8,4,5,7}; 
    System.arraycopy(arr, 3, arr, 2, 3);
    Arrays.copyOf(arr, 5);
    System.out.println(arr.length);
    for(int i= 0;i<arr.length;i++){
        System.out.println(arr[i]);
    }

结果是6 2 6 4 五 7 7

所以你可以看到这个功能无效;

2 个答案:

答案 0 :(得分:2)

您没有分配副本的结果。此

Arrays.copyOf(arr, 5);

应该是

arr = Arrays.copyOf(arr, 5);

假设您需要来自5的第一个arr元素。

答案 1 :(得分:0)

你应该查看源代码

public static int[] copyOf(int[] original, int newLength) {
    int[] copy = new int[newLength];
    System.arraycopy(original, 0, copy, 0,
                     Math.min(original.length, newLength));
    return copy;
}

代码Arrays.copyOf(arr, 5);不会更改原始数组的长度,它将返回一个具有给定长度的新数组。