1.预定义非集合类型--拷贝构造函数
public class TestA { public static void main(String[] args) { Integer a = 1; Integer b = new Integer(a); b = 2; if (!a.equals(b)) { System.out.println("deep copy"); } String m = "ok"; String n = new String(m); n = "no"; if (!m.equals(n)) { System.out.println("deep copy"); } } }
结果:都是deep copy
结论:预定义非集合类型,如果支持拷贝构造函数的类型,则是深拷贝
2. 预定义集合类型--拷贝构造函数--元素为预定义集合类型
import java.util.ArrayList; public class TestA { public static void main(String[] args) { ArrayList list1 = new ArrayList(); list1.add("yangzhou"); ArrayList list2 = new ArrayList(list1); list1.clear(); if (list2.isEmpty()) { System.out.println("shallow copy"); } else { System.out.println("deep copy"); } } }
结果:deep copy
结论:预定义集合类型拷贝构造函数,会逐个调用每个元素的operator=方法,当元素为预定义非集合类型时则为深拷贝
相关推荐
在java中执行这个语句,只是开辟了一块内存空间,并没初始化和赋值对象, 必须用new关键字,来进行初始化和赋值 ———————————————— 版权声明:本文为CSDN博主「鱼包子Ray」的原创文章,遵循 CC ...
================面向对象和内存分析================== 086.面向对象和面向过程的区别_执行者思维_设计者思维 087.对象的进化故事 088.类的定义_类和对象的关系 ...112.对象的浅拷贝和深拷贝_内存分析
63.深拷贝和浅拷贝区别是什么? 六、Java Web 64.jsp 和 servlet 有什么区别? 65.jsp 有哪些内置对象?作用分别是什么? 66.说一下 jsp 的 4 种作用域? 67.session 和 cookie 有什么区别? 68.说一下 session 的...
C++浅拷贝与深拷贝及引用计数分析 在C++开发中,经常遇到的一个问题就是与指针相关的内存管理问题,稍有不慎,就会造成内存泄露、内存破坏等严重的问题。不像Java一样,没有指针这个概念,所以也就不必担心与指针...
深拷贝,浅拷贝的区别 自动装箱拆箱 如何在父类中为子类自动完成所有的hashcode和equals?优劣点在哪里,两者只实现其中一个会有什么影响 反射的原理,反射创建类实例的三种方式是什么。 反射中,Class.forName和...
================面向对象和内存分析================== 086.面向对象和面向过程的区别_执行者思维_设计者思维 087.对象的进化故事 088.类的定义_类和对象的关系 ...112.对象的浅拷贝和深拷贝_内存分析
13.4.2 浅拷贝和深拷贝 13.4.3 clone与final两个冤家 13.5 最佳实践 第14章 中介者模式 14.1 进销存管理是这个样子的吗? 14.2 中介者模式的定义 14.3 中介者模式的应用 14.4 中介者模式的实际应用 14.5 最佳实践 第...
6.20 拷贝Python对象.c浅拷贝和深拷贝 6.21 序列类型小结 6.22 练习 第7章 映像和集合类型 7.1 映射类型:字典 7.1.1 如何创建字典和给字典赋值 7.1.2 如何访问字典中的值 ...
6.20 *拷贝Python对象、浅拷贝和深拷贝 6.21 序列类型小结 6.22 练习 第7章 映像和集合类型 7.1 映射类型:字典 7.1.1 如何创建字典和给字典赋值 7.1.2 如何访问字典中的值 ...
静态构造函数 忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中的异常 与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何...