色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java淺拷貝和深拷貝

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

淺拷貝是復(fù)制了對(duì)象的引用,兩個(gè)引用指向的仍是同一個(gè)對(duì)象,修改一個(gè)對(duì)象會(huì)影響另一個(gè)對(duì)象。示例代碼如下:

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();
}
}

深拷貝則是復(fù)制了對(duì)象的內(nèi)容,兩個(gè)對(duì)象完全獨(dú)立,互不影響。示例代碼如下:

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;
}
}

可以看到,在淺拷貝的實(shí)現(xiàn)中,直接調(diào)用了父類的clone()方法,而在深拷貝的實(shí)現(xiàn)中,除了調(diào)用父類的clone()方法外,還對(duì)數(shù)組進(jìn)行了復(fù)制。

總之,在對(duì)Java對(duì)象進(jìn)行復(fù)制時(shí),需要根據(jù)具體的需求選擇使用淺拷貝還是深拷貝。