国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java Clone接口和深拷貝詳解

java Clone接口和深拷貝詳解

2021-12-02 12:47eaglewgs Java教程

今天小編就為大家分享一篇關于Java Clonable接口和深拷貝詳解上的深入了解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

對于數組的拷貝,如果是簡單類型的話是深拷貝,如果是引用類型的話是淺拷貝,但是因為java是面向對象的,在回答面試官問題的時候,我們可以不用說的這么細,可以直接說淺拷貝。

代碼示例1

class Person implements Cloneable{//如果想克隆自定義類,那么需要在自定義類上實現Cloneable接口
    public int age;
    /*疑問:為什么這個接口是空接口呢?這是一個面試問題。
    空節課:也把它叫做標記接口。其實就是這個意思:只要一個類實現了這個接口,那么就標記這個類是可以進行clone的
    *
    * 2:重寫clone方法*/
    @Override
    protected Object clone() throws CloneNotSupportedException {//重寫了父類的克隆方法
        return super.clone();
    }
}
public class TestDemo {
    public static void main(String[] args) throws CloneNotSupportedException {
        Person person1 = new Person();
        Person person2 = (Person) person1.clone();
        System.out.println(person1.age);
        System.out.println(person2.age);
        System.out.println("=======修改=======");
        person2.age = 99;
        System.out.println(person1.age);
        System.out.println(person2.age);
    }
    /*public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6};
        int[] array2 = array.clone();//對這個數組進行克隆
        array2[0] = 33;//改變拷貝后的數組元素的值不會影響原來數組的元素,這種情況是深拷貝
        System.out.println(Arrays.toString(array2));
        System.out.println(Arrays.toString(array));
    }*/
}

輸出為:

java Clone接口和深拷貝詳解

因為改變的是簡單類型,所以這種情況是深拷貝。

代碼示例2

class Money{
    double money = 12.5;
}
class Person implements Cloneable{//如果想克隆自定義類,那么需要在自定義類上實現Cloneable接口
    public int age;
    /*疑問:為什么這個接口是空接口呢?這是一個面試問題。
    空節課:也把它叫做標記接口。其實就是這個意思:只要一個類實現了這個接口,那么就標記這個類是可以進行clone的
    *
    * 2:重寫clone方法*/
    Money m = new Money();
    @Override
    protected Object clone() throws CloneNotSupportedException {//重寫了父類的克隆方法
        return super.clone();
    }
}
public class TestDemo {
    public static void main(String[] args) throws CloneNotSupportedException {
        Person person1 = new Person();
        Person person2 = (Person) person1.clone();
        System.out.println(person1.m.money);
        System.out.println(person2.m.money);
        System.out.println("=========修改==========");
        person2.m.money = 99.9;
        System.out.println(person1.m.money);
        System.out.println(person2.m.money);
    }
}

輸出為:

java Clone接口和深拷貝詳解

可以參考以下圖分析:

java Clone接口和深拷貝詳解

這種情況就是淺拷貝,那么可以將這個淺拷貝變成深拷貝嗎?只需要將Money也克隆一下

class Money implements Cloneable{//如果想要變成深拷貝的話,那么money也需要被克隆。
    double money = 12.5;
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
class Person implements Cloneable{//如果想克隆自定義類,那么需要在自定義類上實現Cloneable接口
    public int age;
    Money m = new Money();
    @Override
    protected Object clone() throws CloneNotSupportedException {//重寫了父類的克隆方法
        Person p = (Person)super.clone();//1:將當前的對象克隆一份,克隆person
        p.m = (Money) this.m.clone();//2:克隆當前的Money對象
        return p;
    }
}
public class TestDemo {
    public static void main(String[] args) throws CloneNotSupportedException {
        Person person1 = new Person();
        Person person2 = (Person) person1.clone();
        System.out.println(person1.m.money);
        System.out.println(person2.m.money);
        System.out.println("=========修改==========");
        person2.m.money = 99.9;
        System.out.println(person1.m.money);
        System.out.println(person2.m.money);
    }
}

java Clone接口和深拷貝詳解

這樣就就將淺拷貝轉變成了深拷貝,可以參考以下圖分析:

java Clone接口和深拷貝詳解

總結

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!

原文鏈接:https://blog.csdn.net/weixin_47331155/article/details/119851403

延伸 · 閱讀

精彩推薦
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美精品一区二区三区在线 | 欧美日韩亚洲国产 | 精品久久久久久久人人人人传媒 | 国产欧美综合一区二区三区 | 久久青青 | 一级黄色毛片 | 国产乱码久久久久久一区二区 | 久久精品亚洲精品 | 欧美在线视频网站 | 91丨九色丨国产 | 国产乱码精品一区二区三区av | 91亚洲国产| 亚洲经典一区 | 成人免费视屏 | 黄色av大片在线观看 | 久草在线视频免费播放 | 在线观看国产视频 | 国产激情在线视频 | 美女黄18 | 精品久| 一区二区三区免费看 | 国产精品午夜在线观看 | 人人干干人人 | 色在线视频 | 九九热在线视频 | 亚洲小视频网站 | 久久精品亚洲精品 | 国产精品久久久999 一区二区三区视频免费在线观看 | 亚洲高清视频在线 | 日本v在线观看 | 91免费视频 | 中文字幕 在线观看 | 亚洲成人久久久 | 久久亚洲一区二区三区四区 | 香蕉成人啪国产精品视频综合网 | 国产大片在线观看 | 性吧在线 | 黄色av日韩 | a一级黄| 日本在线观看 | 亚洲电影在线看 |