Java 浅拷贝 深拷贝
Posted bearhoney
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 浅拷贝 深拷贝相关的知识,希望对你有一定的参考价值。
- 两者区别主要在于引用数据类型的属性,对于基本数据类型采用的是值传递,所以两者一样;
- 对于浅拷贝,引用数据类型只会进行引用传递,即复制一份引用值(内存地址)给新对象,一个对象的变化会影响到另一个的引用属性对象,两者同时变化,如:数组,对象等;
- 对于深拷贝,会给引用数据类型开辟新的内存空间,并且是逐级复制开辟父级的内存空间,以及父级的父级等等,直到该属性对象可达的所有对象;
浅拷贝的实现方式:
- 构造方法传值;
- 重写clone()方法,方法体中调用super.clone()即可采用Object中的原clone方法;
深拷贝的实现方式:
- 重写clone()方法,不同的是需要对每个对象进行深层复制,并开辟内存空间;
以上是关于Java 浅拷贝 深拷贝的主要内容,如果未能解决你的问题,请参考以下文章