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

Java的深拷贝和浅拷贝--等号赋值(一)

    博客分类:
  • JAVA
阅读更多

Java中常用的拷贝操作有三个,operator = 、拷贝构造函数 和 clone()方法。

不同的类型在拷贝过程中的表现:


 (一)预定义非集合类型等号(=)赋值 

	private void testEqualOperator() {
		int x = 1;
		int y = x;
		y = 2;
		if (x != y) {
			System.out.println("deep copy");
		}

		Integer a = 1;
		Integer b = a;
		b = 2;
		if (!a.equals(b)) {
			System.out.println("deep copy");
		}

		String m = "ok";
		String n = m;
		n = "no";
		if (!m.equals(n)) {
			System.out.println("deep copy");
		}
	}

 结果:都是deep copy  

 结论:预定义非集合类型等号(=)赋值 -- 深拷贝

 

2.预定义集合类型等号(=)赋值 

	private void testEqualOperator() {
		List<String> listStringsA = new ArrayList<String>();
		listStringsA.add("a");
		listStringsA.add("b");
		
		List<String> listStringsB = listStringsA;
		listStringsB.add("c");
		
		for (String str : listStringsA) {
			System.out.println(str);
		}
	}

 结果: 

a
b
c

 结论:预定义集合类型等号(=)赋值--“浅拷贝” 

 

3. 自定义类型等号赋值  

class Person {
	private int age;
	private String name;
	
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

public class AboutCopy {
	
	private void testEqualOperator() {
		Person a = new Person();
		a.setName("NameA");
		a.setAge(10);
		
		Person b = a;
		b.setAge(15);
		
		System.out.println(a.getAge());
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		AboutCopy testObj = new AboutCopy();
		testObj.testEqualOperator();

	}

}

 结果:15 

 结论: 自定义类型等号赋值 -- 浅拷贝

  • 大小: 5.8 KB
分享到:
评论

相关推荐

    MyEclipse2017-CI10-取消等号、空格、分号自动补全功能jar

    打开安装好的MyEclipse2017-CI10的\MyEclipse 2017 CI\plugins文件夹,把下载下来的jar进行替换。

    python-赋值表达式.docx

    在Python中,赋值表达式的语法非常简单,只需要使用等号(=)将变量名和值分开即可。 例如,我们可以使用以下代码将一个整数值赋给一个变量: ``` x = 10 ``` 在这个例子中,我们将整数值10赋给了变量x。现在,我们...

    python-赋值表达式(1).docx

    在Python中,赋值表达式的语法非常简单,只需要使用等号(=)将变量名和值分开即可。 例如,我们可以使用以下代码将一个整数值赋给一个变量: ``` x = 10 ``` 在这个例子中,我们将整数值10赋给了变量x。现在,我们...

    一篇文章读懂Python赋值与拷贝

    变量赋值就是给对象绑定一个名字,赋值并不会拷贝对象。好比我们出生的时候父母就要给我们取一个名字一样,给人取个绰号并不来多出一个人来,只是多一个名字罢了。 两个对象做比较有两种方式,分别是:is 与 == ,is...

    VS2005插件,自动对齐赋值等号与注释

    为了代码看起来更整齐,就希望能把赋值等号和单行注释对齐,VS2005好像没有这个功能,干脆自己动手写一个算了。 注意事项: 适用于VS2005中文版,VS2008没有测试。VS2005英文版下貌似不能加载,好像是一个VS2005...

    对齐等号:在变量赋值中自动对齐等号-matlab开发

    此函数允许您在 matlab 编辑器中对齐等号。 从编辑器中选择一些带有变量分配的文本,然后运行该函数。 您可能会发现将此函数添加为 matlab 工具栏的快捷方式更容易。 此函数并不适用于您的整个代码,而仅适用于...

    07.java等号和equals的区别.avi

    07.java等号和equals的区别.avi

    C语言程序设计(第2版)-2期 常见问题4-2 if语句条件判断表达式中将等号书写成赋值号.pdf

    C语言程序设计(第2版)-2期 常见问题4-2 if语句条件判断表达式中将等号书写成赋值号.pdf 学习资料 复习资料 教学资源

    基于java的简易计算器

    基于java的简易计算器,实现简单的加减乘除功能,用于学习java基础知识参考

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    1.6 小结:我们学会了编译和运行一个Java程序! 18 1.7 习题 19 第2章 搭建自己的集成开发环境 20 教学视频:31分钟 2.1 安装集成开发环境 20 2.1.1 集成开发环境有哪些 20 2.1.2 安装Eclipse 21 2.2 Eclipse...

    python数组复制拷贝的实现方法

    本文实例讲述了python数组复制拷贝的实现方法。分享给大家供大家参考。具体分析如下: ... 您可能感兴趣的文章:对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解详解Python列表赋值复制深拷贝及5种浅拷贝py

    corejava基础重要知识点总结

    jre:当一个电脑上面安装jre之后 只能运行java代码 2:设置环境变量 (环境变量可以不设置 为了简化开发流程 提高开发效率) 给谁使用 作用 PATH: 操作系统 让操作系统更加快捷的找到一个文件/命令 PATH=C:\...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    1.6 小结:我们学会了编译和运行一个Java程序! 18 1.7 习题 19 第2章 搭建自己的集成开发环境 20 教学视频:31分钟 2.1 安装集成开发环境 20 2.1.1 集成开发环境有哪些 20 2.1.2 安装Eclipse 21 2.2 Eclipse...

    java 程序设计 期中考试.doc

    9.在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象. ( × ) 10.只能利用Thread类的子类来创建线程. ( × ) 1.按以下要求编写程序 (1) 创建一个Rectangle...

    原创毕业设计完工贴出来和大家分享一下吧-metro_simulation(Final).rar

    在simulink里面建立模型,然后用GUI对其中变量进行赋值,并通过GUI中的一段函数对制动点进行试凑,最后显示出列车的速度-路程曲线,行驶总路程和时间。 ------------------------------------------- 现将GUI中所...

    C#源代码-等号和Equals的区别.zip

    C#源代码

    测量程序编制 - python 07标识符、变量及赋值.pptx

    等号(=)用来给变量赋值,等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:counter = 100 # 整型变量 miles = 1000.0 # 浮点型变量 变量 变量赋值语法格式: 变量 = 数值 示例:a...

    JAVA语言课程设计报告.doc

    课程设计报告 程序设计语言-JAVA 开课院系:经济管理学院 班 级: 学生姓名: 学 号: 2011.12 目 录 一、课设任务及要求--------------------------------------------------------- ------------------ - 3 二、...

    多功能计算器--java

    在装在有Java SE Runtime Environment(JRE)1.50 的机器上 双击 Calculator.jar 即可运行本程序. /***** ***** ***** ***** ***** 设计说明 ***** ***** ***** ***** *****/ 1.采用面向对象的设计思想. 所有...

    Java编写的计算器图形界面实现加减乘除带括号运算

    Java编写的计算器图形界面实现加减乘除带括号运算 版本1.0 1、图形化界面 2、计算器显示部分分为两个区域:第一行显示输入将要计算的数值及符号,第二行显示结果,第一行字体要小,第二行字体要大,且加粗。 ...

Global site tag (gtag.js) - Google Analytics