理解Java中的深拷貝和淺拷貝

下面列表是Java中深拷貝和淺拷貝的區(qū)別

Shallow Copy Deep Copy
Cloned Object and original object are not 100% disjoint. Cloned Object and original object are 100% disjoint.
Any changes made to cloned object will be reflected in original object or vice versa. Any changes made to cloned object will not be reflected in original object or vice versa.
Default version of clone method creates the shallow copy of an object. To create the deep copy of an object, you have to override clone method.
Shallow copy is preferred if an object has only primitive fields. Deep copy is preferred if an object has references to other objects as fields.
Shallow copy is fast and also less expensive. Deep copy is slow and very expensive.

表格來源Difference Between Shallow Copy Vs Deep Copy In Java

淺拷貝 深拷貝
原對象和克隆對象并不是100%無關(guān)聯(lián) 原對象和克隆對象100%無關(guān)聯(lián)
對克隆對象的任何改變都會反映在原對象中,反之亦然 克隆對象的改變不會反映在原對象中,反之亦然
默認的clone()方法創(chuàng)建的是淺拷貝 要實現(xiàn)深拷貝,必須重寫clone()方法
如果一個對象中字段只有基本類型,推薦淺拷貝 如果一個對象中字段存在其他對象的引用類型,推薦深拷貝
淺拷貝速度快,代價小 深拷貝相對較慢,代價大

通過實例理解淺拷貝和深拷貝TODO


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇文章主要翻譯apple的官方文檔和其他類似博文的學習記錄 Copying Collections 概念 拷貝的...
    devZhang閱讀 3,181評論 4 23
  • 1、對象拷貝有兩種方式:淺復(fù)制和深復(fù)制。顧名思義,淺復(fù)制,并不拷貝對象本身,僅僅是拷貝指向?qū)ο蟮闹羔槪簧顝?fù)制是直接...
    滴答大閱讀 872評論 0 2
  • 道歉 之前我的一篇關(guān)于深淺拷貝的文章,里面有諸多錯誤,主要是混淆了混淆copy、mutableCopy和深淺拷貝,...
    西木柚子閱讀 3,307評論 20 46
  • 在以前的理解當中 copy 和 mutableCopy 對應(yīng)的解釋分別是 深拷貝 和 淺拷貝, 但是這樣的理解是不...
    freemanIT閱讀 387評論 0 0
  • __block和__weak修飾符的區(qū)別其實是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,605評論 0 6

友情鏈接更多精彩內(nèi)容