java总结之克隆

概念定义

定义:对象复制就是将一个对象的属性拷贝到另一个有着相同类类型的对象中去,复制分为:浅复制、深复制、延迟复制三种。

  • 浅复制:浅复制是按位复制对象,它会创建一个新的对象,这个对象有着原始对象属性值的精确拷贝。若原始对象属性值是基本类型,拷贝就是基本类型的值,若属性是引用类型(内存地址),拷贝的就是内存地址,如果一个对象改变了引用的地址,就会影响到另一个对象
    java总结之克隆_第1张图片
    看上图可知:
    由于QuoteObject是一个引用类型,所以CopyObject与SourceObject指向QuoteObject相同的地址
    而基本类型则是直接复制值
    浅复制的实现:
    源对象需要继承Cloneable接口,复写clone()方法,在clone方法中调用父类的clone()方法
    用法:
    Source s1 = new Source();
    Source s2 = (Source)s1.clone();
    其中s1与s2不是相同的,但是s1和s2中的值属性和引用属性是相同的

  • 深度复制
    深度复制:会复制所有的的属性,拷贝的属性指向动态分配的内存,当对象和它引用的对象一起复制的时候就会发生深复制

深度复制的特点:较于浅复制,开销较大,速度较慢

java总结之克隆_第2张图片

看上图并与浅复制对比可知,在做复制的时候,引用类型的属性的指向是不相同的。所以在CopyObject中任何改动都不会影响到SourceObject

如何实现深复制:

一样的源类要实现Cloneable接口,重写clone方法,在clone方法中创建引用类型的

你可能感兴趣的:(JAVASE)