渐析java的浅拷贝和深拷贝-编程开发技术

渐析java的浅拷贝和深拷贝-编程开发技术

ID:30830693

大小:91.50 KB

页数:4页

时间:2019-01-04

渐析java的浅拷贝和深拷贝-编程开发技术_第1页
渐析java的浅拷贝和深拷贝-编程开发技术_第2页
渐析java的浅拷贝和深拷贝-编程开发技术_第3页
渐析java的浅拷贝和深拷贝-编程开发技术_第4页
资源描述:

《渐析java的浅拷贝和深拷贝-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、渐析java的浅拷贝和深拷贝-编程开发技术渐析java的浅拷贝和深拷贝原文出处:chenssy首先来看看浅拷贝和深拷贝的定义:?????浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值,这个方式被称为浅拷贝。?????深拷贝:当一个类的拷贝构造方法,不仅耍复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值。这个方式称为深拷贝?????也就是说浅拷贝只复制一个对象,传递引川,不能复制实例。而深拷贝对对象内部的引用均复制,它是创建一个新的实例,并且复制实例。?????对于浅拷贝当对象的成员变量是基本数据类型吋,两个对象的成员变量已有存储空间

2、,赋值运算传递值,所以浅拷贝能够复制实例。但是当对象的成员变量是引用数据类型时,就不能实现对象的复制了。?????存在一个对象Person,代码如下:publicclassPerson{privatcStringname;privateStringsex;privateintage;publicPerson(Stringname,Stringsex,intage){this,name二name;this,sex=sex;this,age=age;publicPerson(Personp){〃拷贝构造方法,复制对this,name=p.name;this,sex二p.sex;this.ag

3、e=p.age;?????上面的对象Person有三个成员变量。name、sex、ageo两个构造方法。第二个的参数为该对象,它称为拷贝构造方法,它将创建的新对象初始化为形式参数的实例值,通过它可以实现对象复制功能。?????又有一个对象Asian,如下:publicclassAsian{privateStringskin;Personperson;publicAsian(Stringskin,Personperson){this,skin=skin;〃拷贝构造方法,复制对this,person=person;publicAsian(Asianasian){?????上面对象也存在着两个

4、成员变量,skin和Person对象?????对Tperson对象有如下:Personpl=newPerson("李四",“manT,23);Personp2二newPerson(Pl);?????当调用上面的语句时。P2对象将会对Pl进行复制。执行情况如下如下图:P!P2李四man23李四man23NamesexHJ?????对于Asian对象有:Asianal=newAsian(z,yellowz,,newPerson("李四〃,"manT,23));Asiana2=newAsian(al);?????NewAsian(a1)执行Asian类的拷贝构造方法,由于对象赋值是引用赋值。使

5、得al和a2引用同一个对象?????如下图:浅拷贝,传述引用,不能复制实例?????当81执行某条可以改变该值的语句时,那么al将会通过这个语句也可以改变a2对象的成员变量?????如果执行以下语句:a2.name=newPerson(al.name)?????这时将会创建一个新的Person对象?????如下图:al1skin■(Lyelloperso李四man23a2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。