`
tessykandy
  • 浏览: 79056 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java的深拷贝和浅拷贝--构造函数(三)

    博客分类:
  • JAVA
阅读更多

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=方法,当元素为预定义非集合类型时则为深拷贝

 

 

分享到:
评论

相关推荐

    NDK13_C++基础:构造函数、拷贝构造函数、浅拷贝与深拷贝.zip

    在java中执行这个语句,只是开辟了一块内存空间,并没初始化和赋值对象, 必须用new关键字,来进行初始化和赋值 ———————————————— 版权声明:本文为CSDN博主「鱼包子Ray」的原创文章,遵循 CC ...

    Python-函数和内存分析 2.zip

    ================面向对象和内存分析================== 086.面向对象和面向过程的区别_执行者思维_设计者思维 087.对象的进化故事 088.类的定义_类和对象的关系 ...112.对象的浅拷贝和深拷贝_内存分析

    Java常见面试题208道.docx

    63.深拷贝和浅拷贝区别是什么? 六、Java Web 64.jsp 和 servlet 有什么区别? 65.jsp 有哪些内置对象?作用分别是什么? 66.说一下 jsp 的 4 种作用域? 67.session 和 cookie 有什么区别? 68.说一下 session 的...

    C++浅拷贝与深拷贝及引用计数分析

    C++浅拷贝与深拷贝及引用计数分析 在C++开发中,经常遇到的一个问题就是与指针相关的内存管理问题,稍有不慎,就会造成内存泄露、内存破坏等严重的问题。不像Java一样,没有指针这个概念,所以也就不必担心与指针...

    基于javatcpsocket通信的拆包和装包源码-someData:存放一些思维导图,图片,ppt等等

    深拷贝,浅拷贝的区别 自动装箱拆箱 如何在父类中为子类自动完成所有的hashcode和equals?优劣点在哪里,两者只实现其中一个会有什么影响 反射的原理,反射创建类实例的三种方式是什么。 反射中,Class.forName和...

    Python-面向对象和内存分析 2.zip

    ================面向对象和内存分析================== 086.面向对象和面向过程的区别_执行者思维_设计者思维 087.对象的进化故事 088.类的定义_类和对象的关系 ...112.对象的浅拷贝和深拷贝_内存分析

    java设计模式

    13.4.2 浅拷贝和深拷贝 13.4.3 clone与final两个冤家 13.5 最佳实践 第14章 中介者模式 14.1 进销存管理是这个样子的吗? 14.2 中介者模式的定义 14.3 中介者模式的应用 14.4 中介者模式的实际应用 14.5 最佳实践 第...

    Python核心编程第二版(ok)

     6.20 拷贝Python对象.c浅拷贝和深拷贝   6.21 序列类型小结   6.22 练习   第7章 映像和集合类型   7.1 映射类型:字典   7.1.1 如何创建字典和给字典赋值   7.1.2 如何访问字典中的值   ...

    Python核心编程第二版

     6.20 *拷贝Python对象、浅拷贝和深拷贝   6.21 序列类型小结   6.22 练习   第7章 映像和集合类型   7.1 映射类型:字典   7.1.1 如何创建字典和给字典赋值   7.1.2 如何访问字典中的值   ...

    asp.net知识库

    静态构造函数 忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中的异常 与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何...

Global site tag (gtag.js) - Google Analytics