Java數組的clone()方法


  • 結論:

A.一維數組:深克隆(重新分配空間,並將元素復制過去)

對clone后的數組進行修改不會影響源數組。
B.二維數組:淺克隆(只傳遞引用)

對clone后的數組進行修改時,將對源數組也產生影響(因為復制的是引用,實際上指向的是同一個地址)

  • 請看事實證明:
int[] a={3,1,4,2,5};
int[] b=a.clone();
b[0]=10;
System.out.println(b[0]+"  "+a[0]);
輸出為10  3
可見改變了b的值,但是沒有改變a的元素的值

int[][] a={{3,1,4,2,5},{4,2}};
int[][] b=a.clone();
b[0][0]=10;
System.out.println(b[0][0]+"  "+a[0][0]);
輸出為10  10

int[][] a={{3,1,4,2,5},{4,2}};
int[][] b=a.clone();
b[0][0]=10;
System.out.println(b[0][0]+"  "+a[0][0]);
System.out.println(a[0]==b[0]);
第5句輸出為true。
  • 如何實現二維數組的深克隆呢?

對每個一維數組調用clone方法。

int[][] a={{3,1,4,2,5},{4,2}};
int[][] b=new int[a.length][];
for(int i=0;i<a.length;i++){
        b[i]=a[i].clone();
}
b[0][0]=10;
System.out.println(b[0][0]+"  "+a[0][0]);
System.out.println(b[0]==a[0]);
輸出為
10  3
false

————————————————

原文鏈接:https://blog.csdn.net/diyinqian/article/details/83279457


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM