<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ZT文萃

    本博不原創,轉帖自己感興趣那些事人物,什么入眼貼什么,隨心所欲。
    posts - 93, comments - 5, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    轉帖:漸析java的淺拷貝和深拷貝

    Posted on 2014-05-04 06:15 ZT文萃 閱讀(382) 評論(0)  編輯  收藏 所屬分類: 中間件
    轉載自:
    http://www.cnblogs.com/chenssy/p/3308489.html
    版權歸作者所有。

          首先來看看淺拷貝和深拷貝的定義:

          淺拷貝:使用一個已知實例對新創建實例的成員變量逐個賦值,這個方式被稱為淺拷貝。

          深拷貝:當一個類的拷貝構造方法,不僅要復制對象的所有非引用成員變量值,還要為引用類型的成員變量創建新的實例,并且初始化為形式參數實例值。這個方式稱為深拷貝

          也就是說淺拷貝只復制一個對象,傳遞引用,不能復制實例。而深拷貝對對象內部的引用均復制,它是創建一個新的實例,并且復制實例。

          對于淺拷貝當對象的成員變量是基本數據類型時,兩個對象的成員變量已有存儲空間,賦值運算傳遞值,所以淺拷貝能夠復制實例。但是當對象的成員變量是引用數據類型時,就不能實現對象的復制了。

          存在一個對象Person,代碼如下:

    復制代碼
    public class Person {     private String name;     private String sex;     private int age;          public Person(String name,String sex,int age){         this.name = name;         this.sex = sex;         this.age = age;     }          public Person(Person p){                   //拷貝構造方法,復制對象         this.name = p.name;         this.sex = p.sex;         this.age = p.age;     } }
    復制代碼

          上面的對象Person有三個成員變量。name、sex、age。兩個構造方法。第二個的參數為該對象,它稱為拷貝構造方法,它將創建的新對象初始化為形式參數的實例值,通過它可以實現對象復制功能。

          又有一個對象Asian,如下:

    復制代碼
    public class Asian {     private String skin;     Person person;          public Asian(String skin,Person person){         this.skin = skin;         this.person = person;                    //引用賦值     }      public Asian(Asian asian){                 //拷貝構造方法,復制對象         this(asian.skin,asian.person);                } }
    復制代碼

          上面對象也存在著兩個成員變量,skin 和Person對象

          對于person對象有如下:

    Person p1 = new Person("李四","mam",23);   Person p2 = new Person(P1);

          當調用上面的語句時。P2對象將會對P1進行復制。執行情況如下如下圖:

          對于Asian對象有:

    Asian a1 = new Asian("yellow",new Person("李四","mam",23)); Asian a2 = new Asian(a1);

          New Asian(a1)執行Asian類的拷貝構造方法,由于對象賦值是引用賦值。使得a1和a2引用同一個對象

          如下圖:

          當a1執行某條可以改變該值的語句時,那么a1將會通過這個語句也可以改變a2對象的成員變量

          如果執行以下語句:a2.name = new Person(a1.name)

          這時將會創建一個新的Person對象

          如下圖:


    主站蜘蛛池模板: 精品国产亚洲AV麻豆| 91午夜精品亚洲一区二区三区| 99亚洲乱人伦aⅴ精品| 成年人免费视频观看| 久久狠狠爱亚洲综合影院| 在线看片v免费观看视频777| 亚洲一区二区三区精品视频| 免费大片黄在线观看yw| 亚洲天堂2016| 国产无遮挡裸体免费视频| 国产亚洲精品美女久久久久| 四虎影视永久免费观看地址| 黄色三级三级免费看| 久久久久亚洲精品男人的天堂| 精品免费久久久久国产一区 | 久久美女网站免费| 久久青青草原亚洲av无码app| 在线观看www日本免费网站| 2019亚洲午夜无码天堂| 日本一道一区二区免费看| 无码人妻一区二区三区免费视频 | 亚洲精品日韩中文字幕久久久| 中文字幕天天躁日日躁狠狠躁免费| 亚洲欧洲国产成人精品| 免费观看的毛片手机视频| 国产成人无码精品久久久久免费 | 亚洲男人电影天堂| 免费高清在线影片一区| 一级毛片一级毛片免费毛片| 亚洲AV无码专区在线播放中文| 国产成人精品免费午夜app| 亚洲av永久无码精品秋霞电影秋| 日韩亚洲变态另类中文| 114级毛片免费观看| 国产精品亚洲综合| 亚洲国产精品久久久久网站 | 亚洲国产成人AV在线播放 | 亚洲色成人中文字幕网站| 18禁无遮挡无码国产免费网站| 成人婷婷网色偷偷亚洲男人的天堂| 亚洲一区二区三区在线视频|