A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 灰太狼爱平底锅1 中级黑马   /  2014-2-24 23:07  /  1093 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java的深复制与浅复制的区别是怎样的。。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

2 个回复

倒序浏览
这个在C++中比较常见,概括起来讲浅拷贝就是指两个对象共用一个值,一个的改变了另一个也会随之改变,深拷贝则是两个对象值相等,但是相互独立互不影响。
  java中常见的拷贝操作有三种:operator、拷贝构造函数和clone()方法。但是java不支持运算符重载,所以在自定义类型中无法定义operator=,拷贝构造函数不用多说,下面讲解一下clone方法的用法。
  如果要实现Cloneable接口,要先检查 Object的 clone方法是否实现了Cloneable接口,如果没有出现异常
CloneNotSupportedException对象,那么Cloneable接口只是个标准,没有任何方法和作用,这种情况下只要写上 implements Cloneable就能解决了。
  为了防止意外支持clone操作,Object的clone方法通常被设置为protected权限,改写从object继承的clone方法后,建议将权限设置为public。一般情况下如果要给自己的类添加拷贝功能,可以添加拷贝构造函数和实现Cloneable接口。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
复制的时候如果对象内部的其它类的引用所指向的对象也被复制了,就是深复制,否则就是浅复制。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马