精品丰满熟女一区二区三区_五月天亚洲欧美综合网_亚洲青青青在线观看_国产一区二区精选

  • <menu id="29e66"></menu>

    <bdo id="29e66"><mark id="29e66"><legend id="29e66"></legend></mark></bdo>

  • <pre id="29e66"><tt id="29e66"><rt id="29e66"></rt></tt></pre>

      <label id="29e66"></label><address id="29e66"><mark id="29e66"><strike id="29e66"></strike></mark></address>
      學習啦 > 知識大全 > 知識百科 > 百科知識 > Java中對象和引用的具體區(qū)別

      Java中對象和引用的具體區(qū)別

      時間: 映芳735 分享

      Java中對象和引用的具體區(qū)別

        初學Java的人,可能在在很長一段時間里,對對象和引用的基本概念都是很模糊的,老是分不清楚兩者的區(qū)別。下面,學習啦小編給你整理一些有關對象和引用的區(qū)別供有需要的人參考。

        一、對象與引用的概念

        首先小編先解釋一條代碼更你更快的了解對象和引用的概念區(qū)別。

        Vehicle veh1 = new Vehicle();

        通常把這條語句的動作稱之為創(chuàng)建一個對象,其實,它包含了三個動作。

        1)右邊的“new Vehicle()”,即新建對象本身;

        2)左邊的“Vehicle veh1”創(chuàng)建了一個Vehicle類的引用變量或稱對象引用變量。

        所謂Vehicle類引用,就是以后可以用來指向Vehicle對象的對象引用。

        3)“=”操作符使對象引用指向剛創(chuàng)建的那個Vehicle對象。

        我們可以把這條語句拆成兩部分:

        Vehicle veh1;

        veh1 = new Vehicle();

        效果是一樣的。這樣寫,就比較清楚了,有兩個實體:一是對象引用變量,一是對象本身。

        可以這么說,在Java里都是通過引用來操縱對象的。 這就是兩者的區(qū)別。

        二、對象和引用的具體區(qū)別

        相互關聯(lián)體現(xiàn)在:

        1)當對象的引用變量指向對象時,他們兩就聯(lián)系起來,改變引用的屬性,就會改變對象的屬性;

        2)如果同一個對象被多個引用變量引用的話,則這些引用變量將共同影響這個對象本身。

        相互獨立體現(xiàn)在:

        3)一個對象可以被不同的引用變量操縱,同時一個引用變量也可以指向不同的對象,但是同一時刻只能指向一個對象;

        4)從存儲空間上來說,對象和引用也是獨立的,對象一般存儲在堆中,而引用存儲在堆棧(存儲速度更快)中。

        三、小編舉例

        為了加深大家的理解,小編再舉一個例子具體說明一下兩者的區(qū)別。

        class Vehicle {

        int passengers;

        int fuelcap;

        int mpg;

        }

        有了這個模板,就可以用它來創(chuàng)建對象,Vehicle veh1 = new Vehicle();

        通常把這條語句的動作稱之為創(chuàng)建一個對象,其實,它包含了四個動作。

        1)右邊的“new Vehicle”,是以Vehicle類為模板,在堆空間里創(chuàng)建一個Vehicle類對象(也簡稱為Vehicle對象)。

        2)末尾的()意味著,在對象創(chuàng)建后,立即調用Vehicle類的構造函數,對剛生成的對象進行初始化。構造函數是肯定有的。如果你沒寫,Java會給你補上一個默認的構造函數。

        3)左邊的“Vehicle veh1”創(chuàng)建了一個Vehicle類引用變量。所謂Vehicle類引用,就是以后可以用來指向Vehicle對象的對象引用。

        4)“=”操作符使對象引用指向剛創(chuàng)建的那個Vehicle對象。

        我們可以把這條語句拆成兩部分:

        Vehicle veh1;

        veh1 = new Vehicle();

        效果是一樣的。這樣寫,就比較清楚了,有兩個實體:一是對象引用變量,一是對象本身。

      537511