Java的深拷貝和淺拷貝 基礎知識

2021-08-31 02:58:47 字數 464 閱讀 4264

實現

改寫從

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 對於資料型別是基本資料型別的成員變數,淺拷貝會直接進行值傳遞,也就是將該屬性值複製乙份給新的物件。因為是兩份不同的資料,所以對其中乙個物件的該成員變數值進行修改,不會影響另乙個物件拷貝得到的資料。對於資料型別是引用資料型別的成員變數,比如說成員變數是某個陣列 某個類...