java的深度複製和淺度複製

2021-09-23 14:02:19 字數 636 閱讀 4496

1.比如user類中包含了address類:

則淺度複製只是複製了user類,並沒有複製user裡面的address類;

而深度複製則是兩者都複製了;

具體**如下:

user類:

class user implements cloneable

@override

protected object clone() throws clonenotsupportedexception

}

address 類:

class address implements cloneable

@override

public string tostring()

@override

protected object clone() throws clonenotsupportedexception }

主函式:

public static void main(string args) throws exception

}執行結果:

深度複製和淺度複製

深度複製和淺度複製的區別在於有沒有為拷貝出的新物件重新分配一塊記憶體區域。淺度拷貝即直接賦值,拷貝的只是原始物件的引用,在堆中仍然公用一塊記憶體,而深度拷貝為新物件在堆中重新分配一塊記憶體,所以對新物件的操作不會影響原始物件 public class person implements clonea...

淺度複製 深度複製

深度複製 deep copy 從乙個變數到另乙個變數按值複製物件,即產生乙個和原物件相同的並且沒有任何引用聯絡的物件。淺度複製 shallow copy 只複製物件的基本型別,而引用型別仍屬於原來的物件。可以使用systrm.object的memberwiseclone 方法來完成,這是乙個受保護的...

c 淺度複製和深度複製

有時候我們需要根據乙個物件建立另外乙個相同物件,也就是所謂的複製。複製又分為淺度複製 也有叫影子複製 和深度複製。主要的差別是對於引用型別而言。淺度複製對引用型別只複製引用,及複製後源引用與目標引用的引用型別是指向都乙個物件,操作其中乙個,另外乙個也會受印像。深度複製者源引用和目標引用物件的是兩個不...