java數(shù)組復(fù)制的四種方法效率對比
有關(guān)數(shù)組的基礎(chǔ)知識,有很多方面,比方說初始化,引用,遍歷,以及一維數(shù)組和二維數(shù)組,今天我們先看看數(shù)組復(fù)制的有關(guān)內(nèi)容。
來源于??途W(wǎng)的一道選擇題:
JAVA語言的下面幾種數(shù)組復(fù)制方法中,哪個效率最高?
A.for循環(huán)逐一復(fù)制
B.System.arraycopy
C.System.copyof
D.使用clone方法
效率:System.arraycopy>clone>Arrays.copyOf>for循環(huán)
1、System.arraycopy的用法:
public static void arraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length)
參數(shù):
src - 源數(shù)組。
srcPos - 源數(shù)組中的起始位置。
dest - 目標(biāo)數(shù)組。
destPos - 目標(biāo)數(shù)據(jù)中的起始位置。
length - 要復(fù)制的數(shù)組元素的數(shù)量
應(yīng)用實例:
public class Main{
public static void main(String[] args) {
int[] a1={1,2,3,4,5,6};
int[] a2={11,12,13,14,15,16};
System.arraycopy(a1, 2, a2, 3, 2);
System.out.print("copy后結(jié)果:");
for(int i=0;i<a2.length;i++){
System.out.print(a2[i]+" ");
}
}
}
運行結(jié)果:

2、clone的用法:
java.lang.Object類的clone()方法為protected類型,不可直接調(diào)用,需要先對要克隆的類進行下列操作:
首先被克隆的類實現(xiàn)Cloneable接口;然后在該類中覆蓋clone()方法,并且在該clone()方法中調(diào)用super.clone();這樣,super.clone()便可以調(diào)用java.lang.Object類的clone()方法。
應(yīng)用實例:
//被克隆的類要實現(xiàn)Cloneable接口
class Cat implements Cloneable
{
private String name;
private int age;
public Cat(String name,int age)
{
this.name=name;
this.age=age;
}
//重寫clone()方法
protected Object clone()throws CloneNotSupportedException{
return super.clone() ;
}
}
public class Clone {
public static void main(String[] args) throws CloneNotSupportedException {
Cat cat1=new Cat("xiaohua",3);
System.out.println(cat1);
//調(diào)用clone方法
Cat cat2=(Cat)cat1.clone();
System.out.println(cat2);
}
}
3、復(fù)制引用和復(fù)制對象的區(qū)別
復(fù)制引用:是指將某個對象的地址復(fù)制,所以復(fù)制后的對象副本的地址和源對象相同,這樣,當(dāng)改變副本的某個值后,源對象值也被改變;
復(fù)制對象:是將源對象整個復(fù)制,對象副本和源對象的地址并不相同,當(dāng)改變副本的某個值后,源對象值不會改變;
Cat cat1=new Cat("xiaohua",3);//源對象
System.out.println("源對象地址"+cat1);
//調(diào)用clone方法,復(fù)制對象
Cat cat2=(Cat)cat1.clone();
Cat cat3=(Cat)cat1;//復(fù)制引用
System.out.println("復(fù)制對象地址:"+cat2);
System.out.println("復(fù)制引用地址:"+cat3);
輸出結(jié)果:

可以看出,復(fù)制引用的對象和源對象地址相同,復(fù)制對象和源對象地址不同
4、Arrays.copyOf 的用法:
Arrays.copyOf有十種重載方法,復(fù)制指定的數(shù)組,返回原數(shù)組的副本。具體可以查看jdk api
總結(jié)
以上就是本文關(guān)于java數(shù)組復(fù)制的四種方法簡單代碼示例及效率對比的全部內(nèi)容,希望對大家了解數(shù)組復(fù)制的有關(guān)內(nèi)容有所幫助。
相關(guān)文章
Java8函數(shù)式接口Predicate用法示例詳解
這篇文章主要為大家介紹了Java8函數(shù)式接口Predicate用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
SpringMVC結(jié)合Jcrop實現(xiàn)圖片裁剪
這篇文章主要介紹了SpringMVC結(jié)合Jcrop實現(xiàn)圖片裁剪的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12

