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:複製的長度


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章