您的位置:首页 > 编程语言 > Java开发

[java]Arrays.copyOf() VS System.arrayCopy()

2016-02-19 17:01 519 查看
If we want to copy an array, we can use either
System.arraycopy()
or
Arrays.copyOf()
. In this post, I use a simple example to demonstrate the difference between the two. 1. Simple Code Examples System.arraycopy()

int[] arr = {1,2,3,4,5};
int[] copied = new int[10];
System.arraycopy(arr, 0, copied, 1, 5);//5 is the length to copy
System.out.println(Arrays.toString(copied));

Output:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 2, 3, 4, 5, 0, 0, 0, 0]

Arrays.copyOf()

int[] copied = Arrays.copyOf(arr, 10); //10 the the length of the new array
System.out.println(Arrays.toString(copied));   copied = Arrays.copyOf(arr, 3);
System.out.println(Arrays.toString(copied));

Output:

[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
[1, 2, 3]

2. The Major Difference
The difference is that
Arrays.copyOf
does not only copy elements, it also creates a new array.
System.arrayCopy
copies into an existing array.
If we read the source code of Arrays.copyOf(), we can see that it uses
System.arraycopy()
.

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: