clone

Posted 我市小到中雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了clone相关的知识,希望对你有一定的参考价值。

复制对象 or 复制引用

 
在Java中,以下类似的代码非常常见:
		
		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);

从打印结果可以看出,两个对象的地址是不同的,也就是说创建了新的对象, 而不是把原对象的地址赋给了一个新的引用变量:
 
以上代码执行完成后, 内存中的情景如下图所示:
技术分享
 
 




以上是关于clone的主要内容,如果未能解决你的问题,请参考以下文章

如何在多个页面使用同一个HTML片段

合并两个位图的问题

git clone复制远程代码覆盖非空目录

【git】clone代码、ssh、权限问题

clone远程代码及push

git clone从网络上拷贝一份源代码,过几天,想更新一下代码,如何操作?