赋值浅拷贝深拷贝的区别有哪些

更新时间:01-23 教程 由 |唁 分享

赋值浅拷贝深拷贝的区别有哪些?

我用java实例来给你演示一下:

//头

class Head{}

//身体

class Body{}

//脚

class Footer{}

//人

class Person{

String name;

Head head;

Body body;

Footer footer;

}

赋值

Person myself = new Person(); //创建一个我自己

Person son = myself ; //我是我妈妈的儿子【引用】

Person husband = myself ; //我是我老婆的老公【引用】

上面三个变量: myself、son 、husband 都是指代我自己,我在现实中只有一个,所以三个变量引用的是同一个对象(这儿是人),变量相当于称呼

浅拷贝

Person myself = new Person(); //创建一个我自己

Person copy = new Person(); //创建一个副本

copy.head

= myself.head;

copy.body

= myself.body;

copy.footer

= myself.footer;

myself和copy引用的不是同一个对象,但是myself中的属性引用的是同一个,即: 共用了head、body、footer

很明显浅拷贝容易引起很多问题。2个对象不同,但是对象的属性引用相同

深拷贝

Person myself = new Person(); //创建一个我自己

Person deepCopy = new Person(); //创建一个副本

myself 与deepCopy两个对象不同(引用地址不同)

并且两个对象中的属性name、head、body、footer都不同。

声明:关于《赋值浅拷贝深拷贝的区别有哪些》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2202848.html