淺顯易懂的淺拷貝和深拷貝

2021-09-29 14:06:16 字數 785 閱讀 1376

打卡+堅持

今日語錄:活得不冷感,一切都悅納

根據對物件屬性的拷貝程度(基本資料類和引用資料類)分為兩種:

淺拷貝:

(1).對於基本資料類:

因為基礎資料型別是值傳遞的,所以直接將屬性值賦值給新的物件。基礎物件型別的拷貝,其中乙個物件的值修改,不會影響另外乙個值。

棧記憶體:

name

vala

1當b = a複製時,棧記憶體會新開闢乙個記憶體:

|name

vala1b

1此時改變a的值,對b不會造成影響。

拷貝時,其實複製的時a的引用位址,而非堆裡的值

深拷貝:

(1).對於基本資料型別的成員變數:

因為基礎資料型別是值傳遞的,所以是直接將屬性值賦值給新的物件,其中乙個值修改,不會影響另外乙個。(與淺拷貝一樣)

(2).對於引用型別:

比如陣列或類物件,深拷貝會新建乙個物件空間,然後拷貝裡面的內容,所以他們指向不同的記憶體空間。改變其中乙個,對另外乙個不會有影響。

(3).深拷貝相對於淺拷貝速度慢,且開銷大。

(4).對於有多層物件的,每個物件都要實現cloneable並重寫clone方法,進而實現了物件序列的層層拷貝。

可見,深拷貝後,不管資料是基本資料型別還是引用資料型別,修改其值都不會影響其結果。

總結深拷貝就像是離婚了,兩者之間互不影響。

淺拷貝就有點類似於藕斷絲連。

淺顯易懂的委託

一 我對委託的理解 委託是方法的容器,它不生產方法,它只是方法的搬運工。委託這個詞用到程式設計裡面對於很多新人來說可能都不太好理解,以前剛接觸委託的時候也看過不少文章,對於這個詞的解釋大多都雲裡霧裡。但把 委託 換成 託付 對於它的理解可能會清晰不少。例如,劉備將兒子委託給了趙雲和劉備將兒子託付給了...

淺顯易懂的桶排序

想準備將所有的排序演算法都總結出來,方便你查閱,也方便我複習和記憶,下面來說桶排序 首先必須申明,桶排序和計數排序完全不同,不可混為一談 這裡例項用單鏈表來操作 還是老方法,看文字就是煩,直接上圖,結合,永遠都是王道 1.假設 桶待排序列 看了之後有沒有特莫感覺就是雜湊桶,哈哈,滿足一定條件差不多就...

python中yield的用法 淺顯易懂

def consumer name print s 準備吃包子啦 name while true baozi yield return返回的值.print 包子 s 來了,被 s 吃了 baozi,name c consumer 小華 print 華麗分割線1 print c.next print ...