Java深拷贝与浅拷贝

Posted june0816

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java深拷贝与浅拷贝相关的知识,希望对你有一定的参考价值。

一、创建对象的方式

1. new关键字,A a=new A();

2. Constructor类的newInstance()方法,反射实现

3. Class类的newInstance()方法,内部还是调用Constructor类的newInstance()方法,反射实现

4. clone()方法,复制对象产生一个新对象

5. 序列化反序列化

 

二、引用拷贝 vs 对象拷贝

A a1=new A();

A a2=a1;  // a2和a1是同一个对象,内存地址相同,即引用相同

 

三、浅拷贝:值类型拷贝值,引用类型只拷贝了引用而不拷贝引用的对象,拷贝出来的对象和原对象共用引用

1. 当前类实现Cloneable接口

2. 引用类型使用的还是同一个引用

 

四、深拷贝:值类型和引用类型都复制,拷贝出来的对象和原对象相互独立

1. 除了类本身要实现Cloneable接口,类中的其他引用类也要实现Cloneable接口,比较麻烦

2. 对a1序列化,反序列化到a2,可以实现深拷贝

 

 

 

参考:

https://www.cnblogs.com/ysocean/p/8482979.html

 

以上是关于Java深拷贝与浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

Java 深拷贝与浅拷贝概念与代码实现

浅析java的深拷贝与浅拷贝

VUE开发 - 深拷贝与浅拷贝探讨

Java轻松理解深拷贝与浅拷贝

2.深拷贝与浅拷贝的区别

深拷贝与浅拷贝的实现(一)