什么是Shallow Copy和Deep Copy?

Shallow Copy(淺拷貝):創(chuàng)建一個(gè)新的與原類相同的類,在拷貝過程中,類中的基本類型得到正真的復(fù)制,而類中的對象只是實(shí)現(xiàn)引用的拷貝。當(dāng)我們在新的類中修改了其中的某個(gè)對象,這個(gè)對象在原始的類中也會(huì)得到反映。原因是我們修改的對象所指向的內(nèi)存地址是相同的。

從圖中可以看到,復(fù)制后的mainObj2中基本類型field2單獨(dú)獲得了一塊內(nèi)存區(qū),而對象級(jí)別的ObjStr并沒有正真的復(fù)制,內(nèi)存指針指向的還是同一塊區(qū)域。比如我們熟悉的HashMap,HashSet,ArrayList,LinkedList的clone都屬于淺拷貝行為。

Deep Copy(深拷貝):深度拷貝不但實(shí)現(xiàn)了基本類型的復(fù)制,同時(shí)也實(shí)現(xiàn)了對象的復(fù)制,簡單說就是從新用new操作符從新創(chuàng)建了一個(gè)一模一樣的類。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容