杨杨 发表于 2013-2-2 12:09
能用代码说说明一下吗 ???
比如,是比如: 如果要克隆的对象是一个String集合.
ArrayList<String> arrl = new ArrayList<>();
arrl.add("123"); //添加元素
其实,添加进集合的并不是String对象本身,而是该对象的引用或者地址.
浅克隆就是直接克隆该集合,产生一个集合副本. 只是克隆了引用.
但是集合元素内部的元素依然是 String对象的引用或者地址.
此时两个集合中的元素引用指向同一个String对象
深克隆,不但把该集合以及内部对象引用克隆了,还把该引用所指向的对象也可克隆了.
此时两个集合中的元素引用指向两个不同的String对象.
实际的浅克隆是克隆的类对象中成员变量的引用,而不是成员变量引用的对象.
深克隆则是连同该成员变量的引用以及被指向的对象一起克隆. 这里需要使用递归方法来实现.
现在了解下就行了. 暂时没必要深究.
|