假設我們有一個類
我們下面用兩張圖來表示深拷貝和淺拷貝的區別。
- 淺拷貝
- 深拷貝
注意事項:#
假設我們有一個類,然後我們進行淺拷貝
這時候輸出結果為
也就是說,這裡並沒有像之前圖示一樣進行淺拷貝,因為對象 x 中的值與對象 y 中的值不一樣,這是因為 String 和 Integer 等包裝類都是不可變的對象。當需要修改不可變對象的值時,需要在內存中生成一個新的對象來存放新的值,然後將原來的引用指向新的地址。
假設我們有一個類
我們下面用兩張圖來表示深拷貝和淺拷貝的區別。
假設我們有一個類,然後我們進行淺拷貝
這時候輸出結果為
也就是說,這裡並沒有像之前圖示一樣進行淺拷貝,因為對象 x 中的值與對象 y 中的值不一樣,這是因為 String 和 Integer 等包裝類都是不可變的對象。當需要修改不可變對象的值時,需要在內存中生成一個新的對象來存放新的值,然後將原來的引用指向新的地址。