java中clone是深拷贝还是浅拷贝
来源:4-8 索引堆(Index Heap)
厥~~~
2019-06-17
一直看资料都说.clone方法是浅拷贝不管对于数组还是对于list,但是今天验证了下感觉clone又是深拷贝,如下图:
对于a2进行删除元素原来arraylist a1并没有改变,这难道不是深拷贝么?
如果clone是浅拷贝,java中实现arraylist深拷贝的方法是什么?
写回答
1回答
-
liuyubobobo
2019-06-17
clone是浅拷贝。
这里说浅拷贝是指clone后ArrayList中的每一个元素都指向了原先元素的引用。所以一旦改变一个数组的元素另一个数组也会变化。
下面的代码用StringBuilder来说明问题应该很好理解
Java本身不直接提供深拷贝的接口需要自己实现。自己手动将ArrayList的中的每个元素创建一个副本。
如果是自己设计的类可以自己覆盖clone的逻辑以保证他是一个深拷贝
更深入的内容不是这个课程的内容了。这不是一个Java语法课程抱歉。
继续加油
00
相似问题