家人们 ArrayList.clone() 是深拷贝还是浅拷贝 #java# #美团# #字节# #暑期实习#
全部评论
刚看了一下源码,实属浅拷贝,而你被误导的主要原因是理解错了浅拷贝的含义。ArrayList是否浅拷贝的判断依据是拷贝的数组,它的element是否指向原数组,判断方式应该是clone[0]引用指向的地址是否等于原arr[0]的地址,而不是将clone[0]指向另一个元素,让后判断原arr[0]变了没。想要通过变化来判断是否深浅拷贝,应该是clone[0].方法或属性改变对象值,然后看原arr【0】指向对象的属性值是否变化。
6 回复 分享
发布于 2024-05-23 23:42 湖南
这样吧 public class test { public static void main(String[] args) { ArrayList<person> list = new ArrayList<>(2); list.add(new person(1)); person person1 = list.get(0); list.add(new person(2)); list.add(new person(3)); person person2 = list.get(0); System.out.println(person1==person2); } static class person{ private Integer age; person(Integer age) { this.age=age;} } }
点赞 回复 分享
发布于 2024-10-22 16:35 湖北
咋可能是深拷贝
点赞 回复 分享
发布于 2024-05-23 16:53 北京

相关推荐

点赞 评论 收藏
分享
真的好想退休:找实习运气成分很大的,根本没有个具体的时间
点赞 评论 收藏
分享
评论
1
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务