Arrays.copyOf(Object[] objects, int length)功能是實現數組的複製,返回複製後的數組。參數爲被複制的數組和複製的長度(複製以後不足的按照null填充)。java
package top.flygrk.ishare.list.test;
import java.util.Arrays;
/**
* @Author: flygrk
* @Version: 1.0
* @Description: 數組擴容技術
*/
public class ArrayCopy {
public static void main(String[] args) {
Object[] objects = {1, 2};
System.out.println("當前數組長度: " + objects.length);
//返回新的數組,將原來的長度爲2的數組,如今擴容到10, 原來自己的數據不變
Object[] copyNewObjects = Arrays.copyOf(objects, 10);
System.out.println("copyNewObjects: " + copyNewObjects.length);
}
}複製代碼
System.arraycopy()方法若是是數組比較大,那麼使用System.arraycopy()會比較有優點,由於其使用的是內存複製,省去了大量的數組尋址訪問等時間。複製指定源數組src到目標數組dist。複製從源數組src的srcPos索引開始,複製長度爲length,複製到dest數組的開始索引爲destPos。數組
package top.flygrk.ishare.list.test;
import java.util.Arrays;
/**
* @Author: flygrk
* @Version: 1.0
* @Description: 數組擴容技術
*/
public class ArrayCopy {
public static void main(String[] args) {
int[] fun = {0, 1, 2, 3, 4, 5, 6};
System.arraycopy(fun, 0, fun, 3, 3);
for (int i: fun) {
System.out.print(i + " ");
}
}
}
//運行結果: 0 1 2 0 1 2 6 複製代碼
/**
* @Description: 數組複製
* @Param src: 源數組
* @Param srcPos: 源數組複製開始的下標
* @Param dest: 目標數組
* @Param destPos: 目標數組存放的開始下標
* @Param length: 複製長度
*/
public static native void arraycopy(
Object src, int srcPos, Object dest,
int destPos, int length
);
複製代碼
注意: 上述代碼,若是複製的length超越了(數組的長度-起始位置的長度),那麼就會提示數組下標越界異常。微信
---spa