写在前面的话:读书破万卷,编码如有神
--------------------------------------------------------------------
这篇博客主要来谈谈"Java中的深拷贝和浅拷贝"的相关知识,主要内容包括:

1.概述

2.复制对象 or 复制引用

3.深拷贝 or 浅拷贝

--------------------------------------------------------------------

1、概述                                                                                

  clone顾名思义就是克隆的意思,在Java语言中clone方法被调用会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的内存空间,在这个内存空间中创建一个新的对象。那么在Java语言中,有几种方式可以创建对象呢?  

  方法一: 使用new操作符创建一个对象

  方法二: 使用clone方法克隆一个对象

那么上面这两种方式有什么相同和不同呢? new操作符的本意是分配内存,程序执行到new操作符时,首先去看看new操作符后面的数据类型,因为知道了数据类型,才能知道要分配多大的内存空间。分配完内存之后,再调用构造函数填充对象的各个域,这一步叫做对象的初始化,构造方法返回后,一个对象创建完毕,可以把它的引用(地址)发布到外部,在外部就可以使用这个引用操作这个对象了。而clone在第一步是和new操作符相似的,都是进行内存空间的分配,调用clone方法时分配的内存和源对象(即调用clone方法的对象)相同。然后再使用原对象中对应的各个域填充新对象的域,填充完成之后clone方法返回,一个新的相同的对象被创建,同样可以把这个新对象的引用发布到外部。

2、复制对象 or 复制引用                                                         

在Java中,以下类似的代码非常常见:

 1 public class Student implements Cloneable{
 2 
 3     private int StuId;
 4     private String StuName;
 5     private int StuAge;
 6     
 7     public Student(int stuId, String stuName, int stuAge) {
 8         super();
 9         StuId = stuId;
10         StuName = stuName;
11         StuAge = stuAge;
12     }
13     
14     @Override
15     protected Object clone() throws CloneNotSupportedException {
16         return super.clone();
17     }
18 }
View Code

相关文章:

  • 2021-05-31
  • 2021-06-12
  • 2021-07-27
  • 2021-08-05
猜你喜欢
  • 2021-11-23
  • 2021-11-23
  • 2021-04-29
  • 2022-01-09
  • 2021-11-23
  • 2021-11-03
相关资源
相似解决方案