java数组的Arrays.copyOf(arr1, 4); Arrays.copyOfRange(arr1, 1, 4); 到底怎么工作的,不懂啊??
public class Test {
public static void main(String[] args) {
int arr1[]={1,2,3,4,5,6};
int arr2[]=Arrays.copyOf(arr1, 4); //// ????
int arr3[]=Arrays.copyOfRange(arr1, 1, 4); //// ????
System.out.println("arr1:");
for(int i=0;i<arr1.length-1;i++)
System.out.println(arr1[i]);
System.out.println("arr2:");
for(int i=0;i<arr2.length-1;i++)
System.out.println(arr2[i]);
System.out.println("arr3:");
for(int i=0;i<arr3.length-1;i++)
System.out.println(arr3[i]);
}
}
///////////////////////////////////////////////////////////////////////////
arr1:
1
2
3
4
5
arr2:
1
2
3
arr3:
2
3 展开
copyOf
public static int[] copyOf(int[] original,
int newLength)
复制指定的数组,截取或用 0
填充(如有必要),以使副本具有指定的长度。对于在原数组和副本中都有效的所有索引,这两个数组将包含相同的值。对于在副本中有效而在原数组无效的所有索引,副本将包含
0。当且仅当指定长度大于原数组的长度时,这些索引存在。
参数:
original - 要复制的数组
newLength - 要返回的副本的长度
返回:
原数组的副本,截取或用 0 填充以获得指定的长度
抛出:
NegativeArraySizeException
- 如果 newLength 为负
NullPointerException
- 如果 original 为 null
从以下版本开始:
1.6
copyOfRange
public static int[] copyOfRange(int[] original,
int from,
int to)
将指定数组的指定范围复制到一个新数组。该范围的初始索引 (from) 必须位于 0 和
original.length(包括)之间。original[from] 处的值放入副本的初始元素中(除非 from
== original.length 或 from == to)。原数组中后续元素的值放入副本的后续元素。该范围的最后索引
(to)(必须大于等于 from)可以大于
original.length,在这种情况下,0 被放入索引大于等于 original.length -
from 的副本的所有元素中。返回数组的长度为 to - from。
参数:
original - 将要从其复制一个范围的数组
from - 要复制的范围的初始索引(包括)
to - 要复制的范围的最后索引(不包括)。(此索引可以位于数组范围之外)。
返回:
包含取自原数组指定范围的新数组,截取或用 0 填充以获得所需长度
抛出:
ArrayIndexOutOfBoundsException
- 如果 from < 0 或 from > original.length()
IllegalArgumentException
- 如果 from > to
NullPointerException
- 如果 original 为 null
从以下版本开始:
1.6