java深入理解深拷贝和浅拷贝的区别 如何实现深拷贝和浅拷贝
生活随笔
收集整理的這篇文章主要介紹了
java深入理解深拷贝和浅拷贝的区别 如何实现深拷贝和浅拷贝
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 一、拷貝簡介
- 1.1 引用拷貝
- 1.2 對象拷貝
- 二、淺拷貝
- 2.1 定義
- 三、深拷貝
- 3.1 定義
一、拷貝簡介
1.1 引用拷貝
創(chuàng)建一個(gè)指向?qū)ο蟮囊米兞康目截?/strong>
public class DemoCopy {public static void main(String[] args) {// 1. 引用拷貝:創(chuàng)建一個(gè)指向?qū)ο蟮囊米兞康目截?/span>TempUser tempUser = new TempUser("張三",18);TempUser otherTempUser = tempUser;System.out.println(tempUser);System.out.println(otherTempUser);} }class TempUser{private String name;private int age;public String getName(){return name;}public void setName(String name){this.name = name;}public int getAge(){return age;}public void setAge(int age){this.age = age;}public TempUser(String name,int age){this.name = name;this.age = age;} }輸出結(jié)果
com.TempUser@7ba4f24f com.TempUser@7ba4f24f結(jié)果分析
1.2 對象拷貝
public class DemoCopy {public static void main(String[] args) throws CloneNotSupportedException{// 對象拷貝TempUser tempUser = new TempUser("李四",18);TempUser otherTempUser = (TempUser) tempUser1.clone();System.out.println(tempUser);System.out.println(otherTempUser);} }class TempUser implements Cloneable {private String name;private int age;public String getName(){return name;}public void setName(String name){this.name = name;}public int getAge(){return age;}public void setAge(int age){this.age = age;}public TempUser(String name,int age){this.name = name;this.age = age;}// 重寫Clone方法,將訪問權(quán)限修改為publicpublic Object clone() throws CloneNotSupportedException {Object object = super.clone();return object;} }輸出結(jié)果
com.TempUser@3b9a45b3 com.TempUser@7699a589結(jié)果分析
二、淺拷貝
2.1 定義
輸出結(jié)果
王五 | 20 | 大陸 | 天斗 王五 | 20 | 大陸 | 天斗 ------修改地址信息后------ 王五 | 20 | 蒼穹 | 烏坦 王五 | 20 | 蒼穹 | 烏坦結(jié)果分析
三、深拷貝
3.1 定義
輸出結(jié)果
趙六 | 18 | 遮天 | 天庭 趙六 | 18 | 遮天 | 天庭 ------修改地址信息后------ 趙六 | 18 | 完美 | 世界 趙六 | 18 | 遮天 | 天庭結(jié)果分析
總結(jié)
以上是生活随笔為你收集整理的java深入理解深拷贝和浅拷贝的区别 如何实现深拷贝和浅拷贝的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 6078 Wavel Seque
- 下一篇: [网易]2018校园招聘编程题真题集合