`
cakin24
  • 浏览: 1396023 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Java 之浅复制和深复制

    博客分类:
  • java
阅读更多

1 浅复制和深复制区别
浅复制:浅复制只是复制本对象的原始数据类型,如int、float、String,对于数组和对象引用等是不会复制的。因此浅复制是有风险的。
深复制:不但对原始数据类型进行复制,对于对象中的数组和对象引用也做复制的行为,从而达到对对象的完全复制。

2 代码示例

package com;

import java.util.ArrayList;

public class Test implements Cloneable {

	// 私有属性
	private ArrayList<String> nameList = new ArrayList<String>();

	// 添加内容
	public void add(String s) {
		this.nameList.add(s);
	}

	// 获得ArrayList对象
	public ArrayList<String> get() {
		return this.nameList;
	}

	// clone方法
	@Override
	public Test clone() {
		try {
			Test test = (Test) super.clone();
			test.nameList = (ArrayList<String>) this.nameList.clone();    //A
			return test;
		} catch (CloneNotSupportedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 创建test对象
		Test test = new Test();
		// 设置test对象内容
		test.add("aa");
		test.add("bb");

		// 打印显示test中的nameList内容
		System.out.println("test:" + test.get());

		// 克隆test对象生成test2对象
		Test test2 = test.clone();
		// 添加"cc"内容到test2对象中
		test2.add("cc");
		// 打印显示test2中的nameList内容
		System.out.println("test2:" + test2.get());

		// 打印显示test中的nameList内容
		System.out.println("test:" + test.get());

	}
}

 

3 浅复制运行结果

test:[aa, bb]
test2:[aa, bb, cc]
test:[aa, bb, cc]

 

4 深复制运行结果

test:[aa, bb]
test2:[aa, bb, cc]
test:[aa, bb]

 

5 结果分析
从结果分析和代码来看,深复制对浅复制只是多了A处的代码。

1
0
分享到:
评论

相关推荐

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

    本文将深入探讨Java中的浅复制和深复制,并以Android为背景,结合具体的实例讲解如何实现Java泛型深拷贝。 首先,我们要理解浅复制和深复制的概念。浅复制(Shallow Copy)是指创建一个新的对象,然后将原对象引用...

    java List 深度复制方法

    当我们需要复制一个List时,可能会遇到浅复制和深复制的概念。浅复制只复制对象本身,而不复制它引用的对象,而深复制则会递归复制所有引用的对象。这篇博客将探讨如何在Java中对List进行深度复制。 首先,我们来...

    java的深复制与浅复制

    Java提供了两种基本的对象复制方式:浅复制(Shallow Copy)和深复制(Deep Copy)。这两种复制方式各有特点,适用于不同的场景。 #### 二、浅复制(Shallow Copy) 浅复制是指在创建一个新对象时,该对象的属性值...

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

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

    JAVA中浅复制与深复制

    1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。

    android 浅复制和深复制实例

    浅复制和深复制是两种主要的复制方式,它们在处理复杂数据结构时扮演着重要角色。本文将深入探讨这两种复制方式,并通过实例来帮助理解。 ### 1. 浅复制(Shallow Copy) 浅复制是指创建一个新对象,然后将原对象...

    Java深复制与浅复制&Clone

    在Java编程语言中,对象复制是一个常见的操作,...理解并正确使用浅复制和深复制对于开发高效、健壮的Java应用程序至关重要。在处理复杂的数据结构时,应根据需求选择合适的复制策略,以避免不必要的副作用和数据污染。

    Java深复制与浅复制.doc

    在Java编程中,复制对象是常见的操作,主要分为两种方式:浅复制(Shallow Copy)和深复制(Deep Copy)。这两种复制方式的区别在于处理对象内部引用其他对象的情况。 1. **浅复制(浅克隆)**: 浅复制是指创建一...

    Java中的深拷贝(深复制)和浅拷贝(浅复制) 示例代码

    为了理解深拷贝(深复制)和浅拷贝(浅复制),我们需要首先了解Java对象内存的分配方式以及引用的概念。 1. **对象复制的基础** 在Java中,当我们创建一个对象时,系统会在内存中为该对象分配一块空间,存储它的...

    Java 浅复制和深复制的实例详解

    Java 浅复制和深复制的实例详解 Java 中的浅复制和深复制是两种不同的复制方式,它们之间有着本质的区别。在本文中,我们将通过实例详解的方式来介绍 Java 浅复制和深复制的区别和应用场景。 一、浅复制 浅复制是...

    Java中对象的深复制和浅复制详解.doc

    对象复制分为两种主要类型:浅复制(浅克隆)和深复制(深克隆)。理解这两种复制方式的区别对于优化程序性能和避免意外数据更改至关重要。 1. **浅复制(浅克隆)** 浅复制是指创建一个新对象,该对象拥有原始...

    Java中的深拷贝(深复制)和浅拷贝(浅复制)介绍

    在Java编程语言中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是两种不同的对象复制方式,它们涉及到内存中数据的复制和引用的处理。理解这两种拷贝方式对于开发过程中正确管理和操作对象至关重要。 浅拷贝,又...

    java深度复制源代码

    在Java中,对象的复制分为浅复制和深度复制两种。浅复制是指创建一个新的对象,并将原对象的非引用类型的字段值复制到新对象中;对于引用类型的字段,只是复制了引用地址,即新旧对象共享同一份数据。而深度复制则是...

    理解java中的深复制和浅复制

    在Java编程中,深复制和浅复制是两个重要的概念,主要涉及到对象的复制与克隆。这两个术语在处理对象的拷贝时具有不同的含义,理解它们对于编写高效且无误的代码至关重要。 首先,让我们来看一下浅复制(Shallow ...

    java不同对象之间及集合的复制

    在Java中,如果类的属性都是基本类型,可以通过构造函数或克隆方法实现浅复制。但如果属性包含引用类型,就需要深复制以确保新对象拥有独立的引用。 3. **注解实现复制**: 注解是一种元数据,可以提供编译时或运行...

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

    在Java编程中,对象复制是一项常见的任务,特别是在处理模型(Model)和视图对象(VO)时。模型对象通常用于封装业务数据,而视图对象则用于展示这些数据。值复制,即对象属性值的复制,是保持数据一致性和简化代码...

    31.3、深复制和浅复制clone1

    在编程领域,尤其是在Java语言中,深复制和浅复制是两个重要的概念,它们与对象的复制行为密切相关。这里我们将深入探讨这两个概念,并通过实例来解释它们的区别。 首先,让我们了解基本数据类型的复制。在Java中,...

    java 深克隆浅克隆

    Java提供了两种主要的克隆方式:深克隆和浅克隆。 1. 浅克隆(Shallow Clone): 浅克隆是通过调用对象的`clone()`方法来实现的,这个方法是Object类提供的。当一个对象被浅克隆时,新创建的对象将拥有原始对象的...

    Java对象深复制与浅复制实例详解

    Java对象深复制与浅复制是Java编程中两个重要的概念,它们都是对象复制的方式,但它们有着不同的实现机制和应用场景。在本文中,我们将详细介绍Java对象深复制与浅复制的概念、实现机制、应用场景和示例代码。 浅...

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

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

Global site tag (gtag.js) - Google Analytics