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);
srcPos、destPos 分别指 原数组和目标数组的复制起始点,默认只能复制到末尾!
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:
-
可以使用 for-loop 复制元素,但是有点笨!
-
可以使用 System.arrayCopy() 复制元素,但是必须复制到数组末尾。
-
可以使用 Arrays.copyOf() 复制元素,但是只能从数组首元素开始复制。
-
可以使用 Arrays.copyOfRange() 复制元素,可以指定从哪复制,到哪结束,所以这是最万能的数组复制方法!
加油各位!如果觉得有用的话,可以点个推荐吗?(祈求脸.jpg)