美文网首页
java 克隆对象

java 克隆对象

作者: 南土酱 | 来源:发表于2019-04-07 10:18 被阅读0次

P: java分基本数据类型和引用数据类型。

(1)假克隆: 对于 = 等于号的克隆形式, 基本数据类型是值拷贝.相当于把值copy一份了。而引用数据类型是把内存中的地址指向了当前引用,也就是两个引用变量将指向同一个对象。因此,如果一个变量对其进行修改则会改变另一个变量。
(2)浅克隆:  在克隆对象时,如果对象的成员变量时基本类型,则使用浅拷贝。如果包含了引用类型,则需要深拷贝(当然也可以使用浅拷贝)。

浅拷贝: 是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。
深拷贝: 不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象。
举例来说更加清楚:对象A1中包含对B1的引用,B1中包含对C1的引用。浅拷贝A1得到A2,A2 中依然包含对B1的引用,B1中依然包含对C1的引用。
深拷贝则是对浅拷贝的递归,深拷贝A1得到A2,A2中包含对B2(B1的copy)的引用,B2 中包含对C2(C1的copy)的引用。
如果遇到引用类型时使用浅拷贝,相当于是假克隆了

(3)深克隆: 如上所述,类的成员变量包括可变引用类型,则使用深克隆。

例子:

public class Demo13 { public static void main(String[] args) {
 qw qw = new qw();
 te t = new te(6, qw);
 te t2 = t.clone();
 te t3 = t;
 System.out.println(t2 == t);    //false
 System.out.println(t3 == t); } }   // true
System.out.println( t.toString());    //打印对象的地址值
 System.out.println( t2.toString());
 System.out.println( t3.toString());

 class te implements Cloneable {
 private int s;
 private qw q;
 public te(int s, qw q) { this.q = q; this.s = s; }
 public te clone() {
 te t = null;
 try { t = (te) super.clone(); t.q = q.clone(); } catch (Exception e) { } return t; } }
 class qw implements Cloneable {
 public qw clone() {
 qw qw = null;
 try { qw = (qw) super.clone(); } catch (CloneNotSupportedException e) { } return qw; } }

通过判断是否相等以及查看地址值可知:
不使用clone()的时候, 变量的引用指向同一个对象。

相关文章

  • 使用对象序列化和反序列化实现深度克隆

    java对象进行克隆,分为浅克隆和深克隆 浅克隆需要实现java.lang.Cloneable接口,并重写java...

  • java克隆

    java克隆 java克隆分为浅克隆和深克隆,概念如下: 浅拷贝(浅克隆)克隆出来的对象的所有变量都含有与原来的对...

  • 理解Java浅克隆和深克隆

    克隆概念 Java一切皆对象,克隆就是对对象的克隆;克隆可能听起来有点高级,也可以为对象复制或者对象拷贝。平时开发...

  • Java深复制浅复制解析.md

    Java 克隆概念 Java克隆分为深克隆和浅克隆两种类型。 浅复制(浅克隆)被复制对象的所有变量都含有与原来的对...

  • Java | 对象克隆

    浅拷贝 默认的克隆操作,也就是Object的 clone 方法是浅拷贝,浅拷贝只会拷贝对象属性的值,而不会拷贝对象...

  • Java对象克隆

    在Java中数据类型分为值(基本数据类型)类型和引用类型。深克隆和浅克隆的重要区别在于是否支持引用类型(数组、类、...

  • Java对象克隆

    引自:Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨https:/...

  • Java 对象克隆

    所谓的对象克隆描述的概念就是进行对象的赋值,当一个对象创建完成之后实际上都会自动的开辟内存空间,在每一块堆内存空间...

  • java 克隆对象

    P:java分基本数据类型和引用数据类型。 (1)假克隆: 对于 = 等于号的克隆形式, 基本数据类型是值拷贝.相...

  • Java 对象克隆

    Java的拷贝可以分为浅拷贝和深拷贝。 浅拷贝 原变量和拷贝变量引用同一个对象,改变一个变量锁引用的对象将会对另一...

网友评论

      本文标题:java 克隆对象

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