美文网首页
Java 深拷贝和浅拷贝

Java 深拷贝和浅拷贝

作者: tdwmarlboro | 来源:发表于2018-05-25 14:51 被阅读0次

浅拷贝:

被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。

换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。

深拷贝:

被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。

那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。

换言之,深拷贝把要复制的对象所引用的对象都要复制一遍。

1)序列化

2)内部创建新对象构造就可以了

3)采用cloneabel接口进行深拷贝

实现Cloneable接口(但是要将所有对象中的引用对象都实现Cloneable接口,并且在对象的clone方法中调用,就是层层克隆的作用,保证所有数据都被克隆)

Java中对象的克隆

1、为了获取对象的一份拷贝,可以利用Object类的clone()方法。

2、在派生类中覆盖基类的clone()方法,并声明为public。(Object类中的clone()方法是Protected的)。在子类重写的时候,可以扩大访问修饰符的范围。

3、在派生类的clone()方法中,调用super.clone()。因为在运行时刻,Object类中的clone()识别出你要复制的是哪一个对象,然后为此对象分配空间,并进行对象的复制,将原始对象的内容一一复制到新对象的存储空间中。

4、在派生类中实现Cloneable接口。

Java 的clone() 方法

clone()方法定义在Object类中。

clone()方法将对象复制了一份并返回给调用者。拷贝具体的含义将取决于对象所在的类。

一般而言,clone()方法满足:

1、克隆对象与原对象不是同一个对象。即对任何的对象x:

x.clone()!=x

2、克隆对象与原对象的类型一样。即对任何的对象x:

x.clone().getClass() == x.getClass()

3、如果对象x的equals()方法定义恰当,那么下式应该成立:

x.clone().equals(x)

利用序列化实现深拷贝

把对象写到流里的过程是序列化过程(Serialization),而把对象从流中读出来的过程则叫做反序列化过程(Deserialization)。

在Java语言里深复制一个对象,常常可以先使对象实现Serializable接口,然后把对象(实际上只是对象的一个拷贝)写到一个流里,再从流里读出来,便可以重建对象。

相关文章

  • java 对象的拷贝

    拷贝:即复制 对象拷贝:即对象复制 java 对象拷贝分类:浅拷贝、深拷贝 java 对象的浅拷贝和深拷贝针对包含...

  • Java基础 - 深拷贝和浅拷贝

    Java 的深拷贝和浅拷贝 什么是深拷贝、浅拷贝 (深克隆、浅克隆)? 在 Java 中,数据类型分为 基本数据类...

  • java中的深拷贝和浅拷贝

    简单记录一下java中的深拷贝和浅拷贝,深拷贝和浅拷贝只是针对对象而言的. 1 深拷贝代码 2 浅拷贝代码 3 测...

  • iOS深拷贝(MutableCopy)与浅拷贝(Copy)的区别

    深拷贝和浅拷贝的概念 iOS中有深拷贝和浅拷贝的概念,那么何为深拷贝何为浅拷贝呢?浅拷贝:浅拷贝并不拷贝对象本身,...

  • Java------List的深拷贝与浅拷贝

    Java的浅拷贝(Shallow Copy)、深拷贝(Deep Copy)。 浅拷贝(Shallow Copy) ...

  • Java的浅拷贝和深拷贝

    首先需要明白,浅拷贝和深拷贝都是针对一个已有对象的操作。那先来看看浅拷贝和深拷贝的概念。 在 Java 中,除了基...

  • iOS面试题-第二页

    11.深拷贝和浅拷贝的理解. 深拷贝;拷贝的内容. 浅拷贝:拷贝的指针. 深拷贝如: NSMutableDicti...

  • 深克隆--何时是尽头?

    As we all know Java有两种拷贝,浅拷贝和深拷贝,高大上的叫法也叫浅克隆和深克隆。 深克隆有时会碰...

  • iOS - copy 与 mutableCopy

    一说到拷贝,就不得不提浅拷贝和深拷贝。 何谓浅拷贝?何谓深拷贝? 往简单的说: 浅拷贝:拷贝地址。 深拷贝:拷贝内...

  • 关于Java的浅拷贝和深拷贝

    浅拷贝和深拷贝是什么? 浅拷贝和深拷贝都是针对已经存在了的对象的操作,在java中,基本数据类型有八种,和引用数据...

网友评论

      本文标题:Java 深拷贝和浅拷贝

      本文链接:https://www.haomeiwen.com/subject/texrfftx.html