淺拷貝並非拷貝對象自己,而是對指向對象的指針進行拷貝,但仍是指向同一塊堆內存中指針指向的對象
複製代碼
能夠看出淺拷貝中棧內存中指針對象的地址改變了,但仍是指向相同的一塊堆內存地址
複製代碼
直接拷貝對象到內存中的一塊區域,而後把新對象的指針指向這塊內存。
複製代碼
能夠看出深拷貝是直接拷貝對象到內存中的一塊區域(分配了一塊新的內存空間),而後把新對象的指針指向這塊內存,原對象和被賦值對象互不影響。
複製代碼
在因而否在堆內存中開闢新的內存空間。
複製代碼
主要從 容器類和 非容器 類着手,無論是容器類仍是非容器類都有可變對象和不可變對象,因此分爲四種:markdown
[object copy]:對於可變對象爲深拷貝,不可變對象爲淺拷貝。
[object mutableCopy]:始終都是深拷貝。
複製代碼