欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java淺拷貝和深拷貝

李佳璐1年前8瀏覽0評論

在Java中,我們經常需要對對象進行復制,并在不影響原有對象的情況下修改新對象。Java提供了兩種方式進行對象復制,分別是淺拷貝和深拷貝。

淺拷貝是復制了對象的引用,兩個引用指向的仍是同一個對象,修改一個對象會影響另一個對象。示例代碼如下:

public class ShallowCopy implements Cloneable {
private int[] arr;
public ShallowCopy() {
arr = new int[10];
for (int i = 0; i< arr.length; i++) {
arr[i] = i;
}
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}

深拷貝則是復制了對象的內容,兩個對象完全獨立,互不影響。示例代碼如下:

public class DeepCopy implements Cloneable {
private int[] arr;
public DeepCopy() {
arr = new int[10];
for (int i = 0; i< arr.length; i++) {
arr[i] = i;
}
}
@Override
public Object clone() throws CloneNotSupportedException {
DeepCopy obj = (DeepCopy) super.clone();
obj.arr = Arrays.copyOf(this.arr, this.arr.length);
return obj;
}
}

可以看到,在淺拷貝的實現中,直接調用了父類的clone()方法,而在深拷貝的實現中,除了調用父類的clone()方法外,還對數組進行了復制。

總之,在對Java對象進行復制時,需要根據具體的需求選擇使用淺拷貝還是深拷貝。