Java数组的复制
阅读列表
- for循环复制
- System.copyOf()
- Arrays.copyOf()
for 循环
int a[]={0,0,0,1,2,3,0,0};
int i=0;
while(a[i]==0){ //找到最后一个0
i++;
}
System.out.println(i);
int j=0;
int b[]= new int[a.length-i]; //用来储存新数组
for(;i<a.length;i++){
b[j]=a[i];
System.out.print(b[j]);
j++;
}
for 循环复制效率低,且敲代码费力,但是能根据需要设置限制复制比较灵活。
System.copyOf()
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length);
调用原生函数,代码简洁,能进行简单的设定,具有一定灵活性。这种复制为浅拷贝,复制的数组会随着原数组的改变而改变
Arrays.copyOf()
public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
可以看到它是调用System.arraycopy()的方法,比上者的效率显然低一些。但这种方法是深拷贝,也有用处。