4、谈谈你对clone对象的理解

1、复制对象和复制引用的区别

Person p = new Person(23, "zhang");
Person p1 = p;
System.out.println(p);
System.out.println(p1);

当 Person p1 = p;执行之后, 是创建了一个新的对象吗? 首先看打印结果:

可以看出,打印的地址值是相同的,既然地址都是相同的,那么肯定是同一个对象。p 和 p1 只是引用而已,他们
都指向了一个相同的对象 Person(23, “zhang”) 。 可以把这种现象叫做 引用的复制
内存场景图如下:
而下面的代码是真真正正的克隆了一个对象。
Person p = new Person(23, "zhang");
Person p1 = (Person) p.clone();
System.out.println(p);
System.out.println(p1);
当 Person p1 =(Person) p.clone()  执行之后, 是创建了一个新的对象吗? 首先看打印结果:
从打印结果可以看出,两个对象的地址是不同的,也就是说创建了新的对象, 而不是把原对象的地址赋给了一个
新的引用变量。
以上代码执行完成后, 内存中的情景如下图所示:

点击链接加入群聊【Web开发交流群】:https://jq.qq.com/?_wv=1027&k=5dZTsqZ

发布了73 篇原创文章 · 获赞 134 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/Point9/article/details/104071754