淺拷貝複製物件的時候,對於基本型別和string型別,是對字段值進行複製並重新分配記憶體空間,原物件和拷貝的新物件這些屬性互不干擾;對於引用型別,只是重新分配引用變數的記憶體空間,指向的實際物件是同乙個物件
呼叫clone()方法,這個物件所屬類必須實現cloneable介面並重寫clone()方法從列印結果看出:clone()方法是object提供的本地方法:
@hotspotintrinsiccandidate protected native object clone() throws clonenotsupportedexception;
深拷貝複製物件的時候,無論屬性是基本型別還是引用型別,都會新賦值乙份值重新分配空間,互不干擾
淺拷貝 深拷貝
copy mutablecopy copy 不管是可變的,還是不可變的,結果都是不可變的 mutablecopy 不管是不可變的,還是可變的,結果都是可變的 nsmutablestring str nsmutablestring stringwithformat a nsarray arr1 str...
深拷貝 淺拷貝
c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...
淺拷貝 深拷貝
retain是建立乙個指標,引用物件計數加1。copy屬性表示兩個物件內容相同,新的物件retain為1 與舊有物件的引用計數無關,舊有物件沒有變化。copy減少物件對上下文的依賴。retain屬性表示兩個物件位址相同 建立乙個指標,指標拷貝 內容當然相同,這個物件的retain值 1也就是說,re...