Java的深拷贝与浅拷贝的区别

发布时间 2023-08-23 22:54:14作者: yifanSJ

1、二者的区别

浅拷贝:在拷贝一个对象时,对对象的基本数据类型的成员变量进行拷贝,但对引用类型的成员变量只进行引用的传递,并没有创建一个新的对象,当对引用类型的内容修改会影响被拷贝的对象。

深拷贝:在拷贝一个对象时,除了对基本数据类型的成员变量进行拷贝,对引用类型的成员变量进行拷贝时,创建一个新的对象来保存引用类型的成员变量。

2、浅拷贝和深拷贝的应用

浅拷贝

java中clone方法是一个浅拷贝,引用类型依然在传递引用

深拷贝

实现深拷贝有两种方法:

(1) 序列化该对象,然后反序列化回来,就能得到一个新的对象了。

序列化:将对象写入到IO流中; 反序列化:从IO流中恢复对象 序列化机制允许将实现序列化的java对象转化为字节序列,这些字节序列可以保存到磁盘或者网络传输上,以达到以后恢复成原来的对象,序列化机制使得对象可以脱离程序的运行而独立存在。

(2) 继续利用clone()方法,对该对象的引用类型变量再实现一次clone()方法。