實現
改寫從
operator =
拷貝建構函式
clone方法
預定義非集合型別
深拷貝
如果支援拷貝建構函式的型別,則是深拷貝
不支援自定義型別
淺拷貝取決於實現
取決於實現
預定義集合型別
淺拷貝會逐個呼叫每個元素的operator=方法 (所以不一定是深or淺)
會逐個呼叫每個元素的operator=方法
person,**如下:
輸出結果是deep copy;
clone方法的測試**只是將第三行換成list1.clone(),加上型別轉換,這裡不再貼**了。結果也證明是深拷貝預定義集合類的深拷貝
java深拷貝和淺拷貝
會建立乙個新物件,這個物件有原始物件屬性的精確拷貝。屬性是基本型別及其擴充套件型別 拷貝的就是基本型別的值。如果修改原始物件中的基本型別,拷貝物件中的基本型別不變。即原始物件和拷貝物件共用同乙個引用型別或陣列。修改原始物件或拷貝物件中引用型別,另乙個也會跟著變化 通常這種情況不是我們所想要的,這就需...
Java物件的淺拷貝和深拷貝
首先介紹變數拷貝,變數拷貝時,原始變數和拷貝的新變數引用同乙個物件。例如 employee e1 new employee employee e2 e1 如果要建立乙個物件的新拷貝,其狀態和原物件一樣,但是以後各自狀態各自維護,就要使用到clone方法了,當然你也可以通過其他方法實現。clone是o...
Java中的深拷貝和淺拷貝
淺拷貝 shallow copy 對於資料型別是基本資料型別的成員變數,淺拷貝會直接進行值傳遞,也就是將該屬性值複製乙份給新的物件。因為是兩份不同的資料,所以對其中乙個物件的該成員變數值進行修改,不會影響另乙個物件拷貝得到的資料。對於資料型別是引用資料型別的成員變數,比如說成員變數是某個陣列 某個類...