`

浅克隆和深克隆的理解和区别

阅读更多
引用
        今天,和同学讨论了下java的clone()方法;让我更加深刻的理解他们之间的关系;
首先,要实现克隆,先要实现Cloneable接口,重写clone()方法;

public class Test01 implements Cloneable{


引用
在具体实现的时候,浅克隆和深克隆是有区别的,虽然不容易理解,不过没关系,
下面会解释清楚的;


@Override//重写借口里面的方法;(浅克隆)
	protected Test01 clone() throws CloneNotSupportedException {
		Test01 t = new Test01();
		t.id = this.id;
		t.name = this.name;
		return t;
	}

引用
浅克隆只是新实例,而实例的元素的内部属性的对象引用指向被克隆的属性元素对象,
内存中是一个新的Test01()对象,两个引用而已


@Override//深克隆
	protected Test01 clone() throws CloneNotSupportedException {
		Test01 t = new Test01();
		t.id = this.id;
		t.name = new String(this.name);
		return t;
	}

引用
而深克隆是把对象的属性一一重新生成为新的属性,不是原来的对象了,确是重新生成,被层层复制。
1
0
分享到:
评论

相关推荐

    JAVA浅克隆与深克隆

    克隆分为两种主要类型:浅克隆(Shallow Clone)和深克隆(Deep Clone)。这篇博客文章将探讨这两种克隆方式以及如何在Java中实现它们。 首先,我们来理解一下浅克隆。浅克隆是通过调用对象的`clone()`方法创建一个...

    java 深克隆 浅克隆

    在Java编程语言中,克隆是...理解深克隆和浅克隆的概念对于编写复杂的、性能敏感的Java程序至关重要,尤其是在处理大量对象或需要保持数据独立性时。根据具体需求选择合适的克隆策略,可以提高代码的灵活性和可维护性。

    实例分析java对象中浅克隆和深克隆

    浅克隆和深克隆在Java对象中的应用 在Java编程语言中,克隆(Clone)是一种常见的对象复制机制。克隆可以分为浅克隆(Shallow Clone)和深克隆(Deep Clone)两种。浅克隆仅复制对象的引用,而深克隆则完全复制对象...

    Java对象的深克隆与浅克隆详解.zip(wcb2003)

    总的来说,理解Java对象的深克隆和浅克隆是优化代码和解决特定问题的关键。根据具体需求选择合适的克隆方式,可以提高代码的可维护性和灵活性。在设计类和系统时,应考虑对象复制的需求,并决定是否实现`Cloneable`...

    原型模式测试浅复制和深复制(C++)

    通过理解原型模式、浅复制和深复制的概念,以及在C++中如何实现它们,你可以有效地编写和移植使用这些概念的代码。对于给定的项目,可以打开`Prototype.cpp`和`main.cpp`,查看并分析实现以更好地理解这些概念的应用...

    java 对象的克隆(浅克隆和深克隆)

    在Java中,有两种主要的克隆方式:浅克隆(Shallow Clone)和深克隆(Deep Clone)。接下来,我们将详细讨论这两种克隆方式及其区别。 1. 对象的浅克隆: 浅克隆是指创建一个新对象,这个新对象复制了原对象的所有...

    浅拷贝(浅复制、浅克隆)、深拷贝(深复制、深克隆)实战工程

    在编程领域,尤其是在Java语言中,对象的复制是常见的操作,这涉及到两个主要概念:浅拷贝(浅复制、浅克隆)和深拷贝(深复制、深克隆)。这两个概念是理解对象生命周期和内存管理的关键部分。下面将详细阐述它们的...

    android 浅复制和深复制-Java Generic Deep Copy 篇

    首先,我们要理解浅复制和深复制的概念。浅复制(Shallow Copy)是指创建一个新的对象,然后将原对象引用的所有属性值复制到新对象中。这意味着如果属性中包含的是引用类型,那么新旧对象共享同一块内存空间。而深...

    克隆和序列化(Java )

    在Java中,克隆分为浅克隆和深克隆。浅克隆只是复制对象的引用,而深克隆则会创建对象以及所有嵌套对象的新副本。 2. **浅克隆**:通过实现`Cloneable`接口并重写`Object`类的`clone()`方法,可以实现浅克隆。浅...

    js代码-手动实现浅克隆

    手动实现JavaScript中的浅克隆可以采用多种方法,如`Object.assign()`、扩展运算符或`JSON.parse()`和`JSON.stringify()`。然而,这些方法都有其局限性,特别是对于复杂的对象结构。在实际开发中,根据具体需求选择...

    解析JAVA深度克隆与浅度克隆的区别详解

    理解这两种克隆的区别对于优化内存管理和复制复杂对象至关重要。 **浅度克隆(Shallow Clone)** 浅度克隆仅仅复制了对象本身,而不复制它引用的对象。这意味着,如果对象包含对其他对象的引用,克隆后的对象将仍然...

    Java中的克隆(Clone)机制

    总结来说,Java中的克隆机制提供了一种创建对象副本的方式,分为浅克隆和深克隆两种形式,适用于不同的对象结构需求。正确理解和使用克隆机制,可以帮助开发者更有效地管理和复制复杂的数据结构,避免因共享数据导致...

    java深入理解浅拷贝和深拷贝

    在Java编程中,深入理解浅拷贝和深拷贝是非常重要的概念,特别是在处理对象复制时。浅拷贝和深拷贝的区别在于复制对象时对内存中数据的处理方式。 浅拷贝(Shallow Copy)指的是创建一个新的对象,该对象与原对象...

    java的深度克隆的例子

    首先,Java提供了两种基本的克隆方式:浅克隆(shallow clone)和深克隆。浅克隆仅仅复制对象本身,而不复制对象所引用的对象。而深克隆则会递归地复制对象及所有引用的对象,确保新创建的对象和原始对象及其引用的...

    对象克隆(clone)详解.docx

    在Java中,克隆主要涉及到`Object`类中的`clone()`方法,以及两种不同的克隆类型:浅克隆和深克隆。 一、克隆的原理与应用 `clone()`方法的工作原理是在堆上创建一个新的对象,这个新对象的内存分配与源对象相同,...

    教你javascript克隆dom结点,浅复制结点,深复制结点

    本文将详细介绍JavaScript中的DOM节点克隆,包括浅复制和深复制的区别。 一、DOM节点克隆基本概念 DOM节点克隆是通过调用`cloneNode()`方法实现的。这个方法接受一个布尔参数,如果为`true`,则执行深复制;如果为`...

    浅析Java中clone()方法浅克隆与深度克隆

    在Java中,克隆分为两种类型:浅克隆(Shallow Clone)和深度克隆(Deep Clone)。 1. 浅克隆(Shallow Clone) 浅克隆是Java克隆机制的默认行为。当一个对象被克隆时,如果它的成员变量是基本类型(如int、double...

    浅拷贝和深拷贝深入理解(shallow copy VS deep copy)

    引言C#中有两种类型变量,一种 是值类型变量,一种是引用类型变量,对于值类型变量,深拷贝和前拷贝都是...浅拷贝和深拷贝之间的区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复

    Java设计模式之原型模式.docx

    使用原型模式的关键在于理解何时应该使用浅克隆和深克隆,以及如何有效地实现它们。在实际应用中,选择哪种克隆方式取决于对象的复杂性和对副本独立性的需求。对于简单对象,浅克隆可能已经足够,而对于包含复杂引用...

    java 对象克隆

    在Java中,克隆分为两种类型:浅克隆(Shallow Clone)和深克隆(Deep Clone)。浅克隆创建的新对象只复制了原对象的引用,这意味着如果原对象中包含可变的引用类型,如数组或复杂的数据结构,那么新对象和原对象会...

Global site tag (gtag.js) - Google Analytics