浅谈clone与引用

来源:互联网 发布:上海至寻网络怎么样 编辑:程序博客网 时间:2024/05/21 02:35
定义3个对象:obj1, obj2, obj3

new obj1
obj2 = obj1.clone();
obj3 = obj1;

在内存中的存储如下:








(1)obj3 是 obj1 的引用,所以它们指向同一块内存;
(2)obj2 是 obj1 克隆出来的,所以它们指向的不是同一块内存,而属性却指向同一块内存,但修改obj2 不会影响obj1、obj3的属性值,如下图;

(3)由于obj1、obj3指向同一块内存,所以更改其中一个对象的属性,另一个对象的属性都会发生变化;
(4)可以认为obj2 是 obj1的深拷贝;obj3 是 obj1 的浅拷贝

大致就是这个意思,如有错误,欢迎指正!

0 0
原创粉丝点击