java引用类型的浅拷贝与深拷贝理解
1.浅拷贝
只会复制地址值,也就是同一个对象两个引用,只是复制了一个引用而已。

2.深拷贝
重新在堆里创建一个新对象给新引用,连同地址值也不一样。

首先要知道Object的clone()方法,
public class Test implements Cloneable{
public static void main(String[] args) throws CloneNotSupportedException {
Test a = new Test();
Object clone = a.Clone();
System.out.println(a == clone);
System.out.println(a);
System.out.println(clone);
}
public Object Clone() throws CloneNotSupportedException {
return super.clone();
}
}
以上运行结果为:

说明是重新创建了一个新的对象。
java引用类型的浅拷贝与深拷贝理解的更多相关文章
- 【转】JAVA中的浅拷贝和深拷贝
原文网址:http://blog.bd17kaka.net/blog/2013/06/25/java-deep-copy/ JAVA中的浅拷贝和深拷贝(shallow copy and deep co ...
- java中的浅拷贝和深拷贝
复制 将一个对象的引用复制给另一个对象,一共有三种方式.第一种方式是直接赋值,第二种方式是浅复制,第三种方式是深复制. 1.直接赋值 在Java中,A a1 = a2,这实际上复制的是引用,也就是说 ...
- java中的浅拷贝与深拷贝
浅拷贝: package test; class Student implements Cloneable { private int number; public int getNumber() { ...
- js基本类型与引用类型,浅拷贝和深拷贝
1. 基本类型: string,number,boolean,null,undefined 2. 引用类型: Function,Array,Object 基本类型:存放在栈内存中的简单数据段,数据大小 ...
- Java对象的浅拷贝和深拷贝&&String类型的赋值
Java中的数据类型分为基本数据类型和引用数据类型.对于这两种数据类型,在进行赋值操作.方法传参或返回值时,会有值传递和引用(地址)传递的差别. 浅拷贝(Shallow Copy): ①对于数据类型是 ...
- Java 数组的浅拷贝和深拷贝
浅拷贝: 在堆内存中不会分配新的空间,而是增加一个引用变量和之前的引用指向相同的堆空间. int[] a = {1,2,3,4,5}; int[]b = a; public class Test { ...
- 【Java】 Java中的浅拷贝和深拷贝
先抛出结论: 浅拷贝是引用拷贝,A对象拷贝B以后,A对象和B对象指向同一块内存地址,改变A对象的属性值会触发B对象属性的改变,有安全风险 深拷贝是对象拷贝,A对象拷贝B以后,A对象和B对象指向不同的额 ...
- Java 浅拷贝和深拷贝的理解和实现方式
Java中的对象拷贝(Object Copy)指的是将一个对象的所有属性(成员变量)拷贝到另一个有着相同类类型的对象中去.举例说明:比如,对象A和对象B都属于类S,具有属性a和b.那么对对象A进行拷贝 ...
- Java中的clone方法-理解浅拷贝和深拷贝
最近学到Java虚拟机的相关知识,更加能理解clone方法的机制了 java中的我们常常需要复制的类型有三种: 1:8种基本类型,如int,long,float等: 2:复合数据类型(数组): 3:对 ...
随机推荐
- CAD安装失败怎样卸载重新安装CAD,解决CAD安装失败的方法总结
技术帖:CAD没有按照正确方式卸载,导致CAD安装失败.楼主也查过网上关于如何解决CAD安装失败的一些文章,是说删除几个CAD文件和CAD软件注册表就可以解决CAD安装失败的问题,实际的情况并没有这么 ...
- C++2:函数与传递
C++2:函数与传递 赵强 201831061427 目录 一.函数 二.函数重载 三.值传递 四.地址传递 五.递归函数 一.函数 我们在代码编译中常常会用到函数,函数是模块 ...
- Spring Security入门篇——标签sec:authorize的使用
Security框架可以精确控制页面的一个按钮.链接,它在页面上权限的控制实际上是通过它提供的标签来做到的 Security共有三类标签authorize authentication accessc ...
- jenkins集成错误 标签: 发布 2016-01-10 20:45 747人阅读 评论(21) 收藏
进入ITOO的项目以后,终于要将自己负责的模块在jenkins上面集成发布了.首先自己按照文档要求一步一步的将配置完成,然后构建,不错所料出错了,经过修改,终于构建成功!构建成功以后就没再管了,结果第 ...
- @loj - 2174@ 「FJOI2016」神秘数
目录 @description@ @solution@ @accepted code@ @details@ @description@ 一个可重复数字集合 S 的神秘数定义为最小的不能被 S 的子集的 ...
- Python copy(), deepcopy()
copy() 浅拷贝: 创建一组拷贝对象的引用.切片操作相当于浅拷贝,会生成一个新的对象,新的对象里保存原对象的引用. 如果原对象中的可变对象改变(list),那么浅拷贝的对象随之改变,如果原对象中不 ...
- es6 默认参数、rest参数、扩展运算符
1.默认值 现在可以在定义函数的时候指定参数的默认值了,而不用像以前那样通过逻辑或操作符来达到目的了. function sayHello(name){ //传统的指定默认参数的方式 var name ...
- [C#] 查标准正态分布表
C#里面要计算正态分布是一件比较麻烦的事情,一般是通过查表来实现的. static double[] ayZTFB = null; /// <summary> /// 计算标准正态分布表 ...
- python selenium处理JS只读(12306)
12306为例 js = "document.getElementById('train_date').removeAttribute('readonly');" driver.e ...
- Springboot2 Logback mybatis 打印sql执行语句
把这个加入到logback.xml 中就可以打印mysql的日志了 <logger name="jdbc.sqltiming" level="debug" ...