java复制数组方法

java 可以使用 A=B 给基本数据值传递,他们指向的是同一个数组空间,如果其中一个改变了

另一个也就会要改变,所以就有了复制数组的,让两个数组分别私有自己的空间,改变不会

引起其他的改变:

有三种方法:

1、for循环,将每个数组的元素复制,效率比较低

2、使用clone()方法,得到的是数组的每个值,不再是引用,不能复制指定元素

3、使用System.arraycopy(src, srcPos, dest, destPos, length)方法,推荐使用

int [] src = {1,2,3,4};

int [] dest;


其中clone()方法是最简单,最高效的方法

clone()也有深克隆和浅克隆:


浅克隆:

public class Clone implements Cloneable{
private int a;
@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
Clone cloneClass = null;
cloneClass = (Clone)super.clone();
return cloneClass;
}
}


深克隆:

public class Clone implements Cloneable{
private int [] a;
@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
Clone cloneClass = null;
cloneClass = (Clone)super.clone();
cloneClass.a = (int [])a.clone();
return cloneClass;
}

}


当类中含有引用对象时,不只是基本的数据类型,就需要深克隆。

dest = (int [])src.clone();


System.arraycopy(src, srcPos, dest, destPos, length)


函数原型:

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length );

src:源数组; srcPos:源数组要复制的起始位置

dest:目的数组;  destPos:目的数组放置的起始位置

length:复制的长度


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值