当需要复制某个对象,但修改得到对象的值又不影响原有的对象,此时就需要clone.
1 |
|
不使用clone时的情况,用’=’进行赋值
1 |
|
使用’=’, 让两个引用指向了同一个内存区域,p2修改了name,p1也会变.
就相当于,
1 |
|
深拷贝与浅拷贝
浅拷贝: 对基本数据类型进行值传递,对引用数据类型进行引用传递
深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容
clone是一种浅拷贝
1 |
|
如果想对对象进行深拷贝,提供几个思路(在不引入其他jar包的情况下).
- 将对象中引用的对象再次clone,即Male类也实现Cloneable,重写clone方法
- 利用序列化
1 |
|
对自己的现状不满意只有付出更多的努力去改变它
如果有不对的地方或建议,请指出,谢谢啦