美文网首页java开发日记
Java中的clone方法你知道多少?

Java中的clone方法你知道多少?

作者: BobWen | 来源:发表于2018-03-09 10:42 被阅读0次

我们知道clone方法在Java中是一个复制对象的方法,那么Java有几种创建对象的方式呢?

1.通过new关键字创建一个对象

2.通过clone方法复制一个对象

复制引用和通过clone方法复制对象有什么不同?

在分析这个问题之前我们先了简单了解下Java中JVM的内存分配,Java的JVM的内存分为3个区:堆(Heap)、栈(Stack)和方法区(Method Area)。

接下来通过两个实例进行分析

实例1

执行 Dog dog1 = dog;是生成一个新对象还是复制的一个引用?

打印结果:

通过打印结果我们看到,执行 Dog dog1 = dog; 后打印的地址是相同的,则执行Dog dog1 = dog;是复制的一个引用。

JVM内存分配情况

实例2

打印结果:

通过打印结果我们看到,执行 Dog dog1 = (Dog) dog.clone(); 后打印的地址是不相同的,则执行Dog dog1 = (Dog) dog.clone();是创建了一个新对象。

JVM内存分配情况

使用clone方法中常提到的深拷贝和浅拷贝

实例3 深拷贝

在执行Body body1 =(Body) body.clone();重新创建了一个新对象而不是复制的一个引用,这种情况叫深拷贝。

实例4 浅拷贝

在执行Body body1 = body;拷贝的是一个引用,这种情况叫浅拷贝。

通过实例3和实例4得出一个结论:如果想要深拷贝一个对象, 这个对象必须要实现Cloneable接口,实现clone方法。

总结:

虽然clone方法平时项目不是很常用,但是通过clone方法去深入了解JVM的内存结构和运行机制,也是写这篇文章的目的。

谢谢阅读!

相关文章

  • Java中的clone方法你知道多少?

    我们知道clone方法在Java中是一个复制对象的方法,那么Java有几种创建对象的方式呢? 1.通过new关键字...

  • Java Clone 学习

    Java Clone 学习 原文地址:详解Java中的clone方法 通常在Java中我们通过new关键字创建对象...

  • java收藏夹

    java中的经典问题solution Java 的静态工厂方法 单例的四种实现方法 Java中的clone方法 J...

  • 详解Java中的clone方法 -- 深拷贝和浅拷贝

    Java中对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。...

  • Clone() method in Java

    原文:geeks4geeks Java 中的 clone() 方法 对象 clone 是指创建对象的精确拷贝,它创...

  • Object类常用方法

    #clone Java中要想自定义类的对象可以被复制,自定义类就必须实现Cloneable中的clone()方法,...

  • java中clone方法的实现

    java中仅有的创建对象的两种方式:①.使用new操作符创建对象;②.使用clone方法复制对象。由于clone方...

  • 第11条:谨慎地覆盖clone

    clone 方法使用详解 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对...

  • java基础-Object

    Object是java中的顶级父类---也是java中唯一一个没有父类的类. 重要方法 clone()---克隆出...

  • java的clone方法

    在阿里的java开发手册里面,有这样的一条建议,慎重的使用Object的Clone方法,这个方法是native方法...

网友评论

    本文标题:Java中的clone方法你知道多少?

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