Java 数组复制

1. 使用 for-loop 复制数组元素 

1 int[] num1 = {1, 2, 3, 4, 5};
2 int[] num2 = new int[num1.length];
3 for (int i = 0; i < num1.length; i++) {
4     num2[i] = num1[i];
5 }

2. 使用 System.arrayCopy()

1 int[] num1 = {1, 2, 3, 4, 5};
2 int[] num2 = new int[num1.length];
3 System.arraycopy(num1, 0, num2, 0, num1.length);

srcPosdestPos 分别指 原数组和目标数组的复制起始点,默认只能复制到末尾!


Notes: 如果目标数组不足以容纳原数组所有元素,则会抛出异常,现在我把 destPos 设为1,一起看一下结果!

 Throwed an exception already: ArrayIndexOutOfBoundsException

3. 使用 Arrays.copyOf() or Arrays.copyOfRange()

  3.1 Arrays.copyOf() 使用

public static int[] copyOf(int[] original, int newLength) // original array, newLength of current array
int[] num1 = {1, 2, 3, 4, 5};
int[] num2 = new int[3];

num2 = Arrays.copyOf(num1, 3);  // newLength = 3,只复制前3个元素

Note:

如果 newLength 小于原数组,则复制前面 newLength 长度的元素。 

其实 Arrays.copyOf()内部实现使用了System.arrayCopy()

   3.1 Arrays.copyOfRange() 使用

 public static int[] copyOfRange(int[] original, int from, int to) //from(inclusive), to(exclusive)
1 int[] num1 = {1, 2, 3, 4, 5};
2 int[] num2 = new int[5];
3 num2 = Arrays.copyOfRange(num1, 1, 3);
//now num2: {2, 3}

4. Summary:

  1. 可以使用 for-loop 复制元素,但是有点笨!

  2. 可以使用 System.arrayCopy() 复制元素,但是必须复制到数组末尾。

  3. 可以使用 Arrays.copyOf() 复制元素,但是只能从数组首元素开始复制。

  4. 可以使用 Arrays.copyOfRange() 复制元素,可以指定从哪复制,到哪结束,所以这是最万能的数组复制方法!

加油各位!如果觉得有用的话,可以点个推荐吗?(祈求脸.jpg) 

原文地址:https://www.cnblogs.com/sheepcore/p/12401510.html