数组拷贝,Arrays.copyOf和System.arraycopy
Arrays.copyOf
- 如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法:
int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers, luckyNumbers.length) ;
- 如果数组元素是数值型,那么多余的元素将被赋值为0 ; 如果数组元素是布尔型, 则将赋值为false。相反, 如果长度小于原始数组的长度,则只拷贝最前面的数据元素。
- 这个方法通常用来扩容.
int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers, luckyNumbers.length * 2) ;
System.arraycopy
- System中提供了一个native静态方法arraycopy(),可以使用这个方法来实现数组之间的复制。对于一维数组来说,这种复制属性值传递,修改副本不会影响原来的值。对于二维或者一维数组中存放的是对象时,复制结果是一维的引用变量传递给副本的一维数组,修改副本时,会影响原来的数组。
区别
- Arrays.copyOf不仅仅拷贝数组元素,在拷贝过程中创建新的数组对象。而System.arraycopy只拷贝已存在的数组元素。
- Arrays.copyOf底层还是调用了System.arraycopy函数。