`
tessykandy
  • 浏览: 80716 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java的深拷贝和浅拷贝--构造函数(三)

    博客分类:
  • JAVA
阅读更多

1.预定义非集合类型--拷贝构造函数

public class TestA {

	public static void main(String[] args) {
		Integer a = 1;
		Integer b = new Integer(a);
		b = 2;
		if (!a.equals(b)) {
			System.out.println("deep copy");
		}

		String m = "ok";
		String n = new String(m);
		n = "no";
		if (!m.equals(n)) {
			System.out.println("deep copy");
		}
	}
}

 结果:都是deep copy

 结论:预定义非集合类型,如果支持拷贝构造函数的类型,则是深拷贝

 

2. 预定义集合类型--拷贝构造函数--元素为预定义集合类型

import java.util.ArrayList;

public class TestA {

	public static void main(String[] args) {
		ArrayList list1 = new ArrayList();
		list1.add("yangzhou");
		ArrayList list2 = new ArrayList(list1);
		list1.clear();

		if (list2.isEmpty()) {
			System.out.println("shallow copy");
		} else {
			System.out.println("deep copy");
		}
	}
}

 结果:deep copy

 结论:预定义集合类型拷贝构造函数,会逐个调用每个元素的operator=方法,当元素为预定义非集合类型时则为深拷贝

 

 

分享到:
评论

相关推荐

    Java Clone深拷贝与浅拷贝的两种实现方法

    深拷贝可以使用多种方法来实现,例如使用序列化和反序列化、使用复制构造函数、使用 clone() 方法等。 例如,我们可以使用下面的代码来实现深拷贝: ```java public class Student implements Cloneable { ...

    python-拷贝构造函数.docx

    在Python中,由于其动态类型系统和垃圾回收机制,对象的复制并不像C++或Java那样需要显式的拷贝构造函数。然而,Python提供了类似的功能,包括浅拷贝(shallow copy)和深拷贝(deep copy),通过`copy`模块来实现。...

    《剑指offer》Java浅拷贝和深拷贝.pdf

    Java中的对象拷贝是一个重要的...总之,理解Java中的浅拷贝和深拷贝对于编写可维护和可扩展的代码至关重要,尤其是在处理复杂的数据结构和对象依赖时。掌握这些概念可以帮助你更好地应对面试挑战和解决实际编程问题。

    使用java反射机制实现java的深拷贝

    在Java编程中,深拷贝和浅拷贝是两种常见的对象拷贝方式。它们主要区别在于,浅拷贝仅复制对象本身,而不复制它引用的对象;而深拷贝则会递归地复制对象及其所有引用的对象。在某些情况下,如需要完全独立的副本时,...

    NDK13_C++基础:构造函数、拷贝构造函数、浅拷贝与深拷贝.zip

    在java中执行这个语句,只是开辟了一块内存空间,并没初始化和赋值对象, 必须用new关键字,来进行初始化和赋值 ———————————————— 版权声明:本文为CSDN博主「鱼包子Ray」的原创文章,遵循 CC ...

    详解java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝)

    在Java编程中,深拷贝和浅拷贝是两种复制对象的方法,它们涉及到对象的内存管理以及对象引用的处理。本文将深入探讨这两种拷贝方式,并着重讲解如何通过重写`clone()`方法以及使用序列化来实现深拷贝。 1. 浅拷贝:...

    Java中的深拷贝和浅拷贝介绍

    根据拷贝的深度,Java提供了浅拷贝和深拷贝两种方式,这两种拷贝方式处理对象属性的方式有所不同,对于含有引用类型的属性,它们的表现尤为关键。 一、浅拷贝(Shallow Copy) 浅拷贝是Java中最基础的拷贝形式,它...

    1. 拷贝构造与拷贝赋值1

    在C++中,拷贝构造函数默认是浅拷贝行为,但如果类中有动态分配的资源(如指针),则需要显式实现深拷贝,以防止资源泄漏和意外的数据修改。 拷贝构造函数通常按引用传递参数,而不是按值传递,因为如果按值传递,...

    java 深拷贝与浅拷贝机制详解

    对于复杂对象结构,可能需要使用序列化和反序列化来实现深拷贝,或者使用其他复制策略,如构造函数或工厂方法。 了解和掌握深拷贝与浅拷贝的概念以及如何在Java中实现它们,对于编写高效、健壮的代码至关重要,尤其...

    java深复制浅复制的实现源代码

    本篇文章将深入探讨Java中的深复制和浅复制概念,并通过源代码示例进行详细解析。 首先,我们理解一下深复制和浅复制的区别: 1. **浅复制(Shallow Copy)**:浅复制只是复制了对象的引用,而不是对象本身。这...

    关于java中的深copy与浅copy的问题

    在Java编程中,深拷贝和浅拷贝是两种常见的对象复制方式,它们涉及到对象的内存管理和内存层次的复制。本文将深入探讨这两个概念,并通过一个具体的示例——`CopyTest`来阐述它们的区别。 首先,浅拷贝(Shallow ...

    java高端技术课程--Java数组如何实现复制

    在Java中,数组的复制分为浅拷贝和深拷贝两种。浅拷贝仅复制数组本身,不复制其元素,而深拷贝则会复制整个对象包括嵌套的对象。对于基本类型数组,复制过程就是简单的内存复制;对于引用类型数组,浅拷贝仅复制...

    java不同对象及集合的多次复制

    - **构造函数**:通过对象的构造函数创建新对象,并将源对象的属性值逐一赋值给新对象,实现浅拷贝。 - **序列化与反序列化**:将对象序列化为字节数组,然后再反序列化为新的对象,实现深拷贝。 3. **注解实现...

    java对象复制克隆

    对象复制通常分为浅拷贝和深拷贝。标题中的“java对象复制克隆”主要涉及的是深拷贝,这是一种创建一个新对象的方式,新对象不仅复制了原对象的所有属性,还复制了嵌套的对象引用,使得修改复制后的对象不会影响到...

    java经典面试题

    - 如何实现深拷贝和浅拷贝? - 详述equals()和hashCode()方法的重要性。 6. **集合框架** - List、Set、Map之间的区别是什么? - ArrayList和LinkedList的性能差异在哪里? - 什么是泛型?使用泛型的好处是...

    java面试宝典

    - 理解深拷贝和浅拷贝的区别,以及它们在对象复制中的应用。 22. **Java中的泛型和类型安全** - 泛型提供了一种类型安全的解决方案,用于创建可复用的组件。 - 理解泛型如何消除类型转换的需要,并提高代码的...

    详解JAVA 原型模式

    在Java中,可以通过序列化和反序列化实现深拷贝,或者手动实现每个引用对象的深拷贝。 **示例代码** ```java public abstract class Shape implements Cloneable { // ... public abstract Object clone(); } ...

    php中拷贝构造函数、赋值运算符重载

    在PHP中,虽然没有明确的拷贝构造函数和赋值运算符重载的概念,与C++或Java等其他面向对象的编程语言不同,但可以通过其他方式实现类似的效果。PHP的对象复制通常分为浅复制和深复制两种情况。 浅复制指的是当对象...

Global site tag (gtag.js) - Google Analytics