首頁>Club>
他們之間的不同是什麼,包括內容和地址?謝謝
2
回覆列表
  • 1 # 傑哥學Java

    我用java例項來給你演示一下:

    //頭

    class Head{}

    //身體

    class Body{}

    //腳

    class Footer{}

    //人

    class Person{

    String name;

    Head head;

    Body body;

    Footer footer;

    }

    賦值

    Person myself = new Person(); //建立一個我自己

    Person son = myself ; //我是我媽媽的兒子【引用】

    Person husband = myself ; //我是我老婆的老公【引用】

    上面三個變數: myself、son 、husband 都是指代我自己,我在現實中只有一個,所以三個變數引用的是同一個物件(這兒是人),變數相當於稱呼

    淺複製

    Person myself = new Person(); //建立一個我自己

    Person copy = new Person(); //建立一個副本

    copy.head

    = myself.head;

    copy.body

    = myself.body;

    copy.footer

    = myself.footer;

    myself和copy引用的不是同一個物件,但是myself中的屬性引用的是同一個,即: 共用了head、body、footer

    很明顯淺複製容易引起很多問題。2個物件不同,但是物件的屬性引用相同

    深複製

    Person myself = new Person(); //建立一個我自己

    Person deepCopy = new Person(); //建立一個副本

    myself 與deepCopy兩個物件不同(引用地址不同)

    並且兩個物件中的屬性name、head、body、footer都不同。

  • 中秋節和大豐收的關聯?
  • 摩托羅拉V4什麼時候上市?