Java深拷貝和淺拷貝舉例詳解

2021-08-14 02:53:11 字數 1068 閱讀 9757

淺拷貝將原來物件的記憶體位址複製給乙個新的物件,但不建立新的object。

而深拷貝建立新的物件,並將需要拷貝的值複製到新的object裡。

example:

package cdexamples;

public class cdcollectionowner

public cd getcdsreferencecopy()

public cd getcdsshallowcopy()

public cd getcdsdeepcopy()

public string tostring()

}

從上述**不難看出深拷貝和淺拷貝的區別。

以下是該程式的driver:

public class cddriver 

}

輸出為:

****regular cd ***

after reference copy:

fawzi

barry manilow:one voice & the eagles:hotel california

------------------

after shallow copy:

fawzi

rolling stones:exile on main street & the eagles:hotel california

------------------

***rewritable cd***

after shallow copy:

fawzi

barry manilow:one voice & the eagles:hotel california

------------------

after deep copy:

fawzi

rolling stones:exile on main street & the eagles:hotel california

------------------

java深拷貝和淺拷貝

會建立乙個新物件,這個物件有原始物件屬性的精確拷貝。屬性是基本型別及其擴充套件型別 拷貝的就是基本型別的值。如果修改原始物件中的基本型別,拷貝物件中的基本型別不變。即原始物件和拷貝物件共用同乙個引用型別或陣列。修改原始物件或拷貝物件中引用型別,另乙個也會跟著變化 通常這種情況不是我們所想要的,這就需...

淺拷貝和深拷貝具體詳解

當用乙個已經初始化了的自定義類型別物件去初始化另乙個新構造的物件的時候,拷貝建構函式就會被自動呼叫,也就是說,當類的物件需要拷貝時,拷貝建構函式將會被呼叫。以下情況都會呼叫拷貝建構函式 1 乙個物件以值傳遞的方式傳入函式體 2 乙個物件以值傳遞的方式從函式返回 3 乙個物件需要通過另乙個物件進行初始...

python 深拷貝和淺拷貝詳解

指向 賦值語句 b a,淺拷貝 對於乙個物件的頂層拷貝,拷貝了引用,並沒有拷貝內容copy.copy copy.copy 拷貝的是不可變型別 數字,元祖 那麼它不會進行淺拷貝,僅僅是指向 深拷貝 copy.deepcopy 只要有可變型別時,都會複製 如果用copy.copy copy.deepco...