亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦 > 知識(shí)大全 > 知識(shí)百科 > 百科知識(shí) > Java中對(duì)象和引用的具體區(qū)別

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

      時(shí)間: 映芳735 分享

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

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

        一、對(duì)象與引用的概念

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

        Vehicle veh1 = new Vehicle();

        通常把這條語(yǔ)句的動(dòng)作稱之為創(chuàng)建一個(gè)對(duì)象,其實(shí),它包含了三個(gè)動(dòng)作。

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

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

        所謂Vehicle類引用,就是以后可以用來(lái)指向Vehicle對(duì)象的對(duì)象引用。

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

        我們可以把這條語(yǔ)句拆成兩部分:

        Vehicle veh1;

        veh1 = new Vehicle();

        效果是一樣的。這樣寫,就比較清楚了,有兩個(gè)實(shí)體:一是對(duì)象引用變量,一是對(duì)象本身。

        可以這么說(shuō),在Java里都是通過(guò)引用來(lái)操縱對(duì)象的。 這就是兩者的區(qū)別。

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

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

        1)當(dāng)對(duì)象的引用變量指向?qū)ο髸r(shí),他們兩就聯(lián)系起來(lái),改變引用的屬性,就會(huì)改變對(duì)象的屬性;

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

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

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

        4)從存儲(chǔ)空間上來(lái)說(shuō),對(duì)象和引用也是獨(dú)立的,對(duì)象一般存儲(chǔ)在堆中,而引用存儲(chǔ)在堆棧(存儲(chǔ)速度更快)中。

        三、小編舉例

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

        class Vehicle {

        int passengers;

        int fuelcap;

        int mpg;

        }

        有了這個(gè)模板,就可以用它來(lái)創(chuàng)建對(duì)象,Vehicle veh1 = new Vehicle();

        通常把這條語(yǔ)句的動(dòng)作稱之為創(chuàng)建一個(gè)對(duì)象,其實(shí),它包含了四個(gè)動(dòng)作。

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

        2)末尾的()意味著,在對(duì)象創(chuàng)建后,立即調(diào)用Vehicle類的構(gòu)造函數(shù),對(duì)剛生成的對(duì)象進(jìn)行初始化。構(gòu)造函數(shù)是肯定有的。如果你沒(méi)寫,Java會(huì)給你補(bǔ)上一個(gè)默認(rèn)的構(gòu)造函數(shù)。

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

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

        我們可以把這條語(yǔ)句拆成兩部分:

        Vehicle veh1;

        veh1 = new Vehicle();

        效果是一樣的。這樣寫,就比較清楚了,有兩個(gè)實(shí)體:一是對(duì)象引用變量,一是對(duì)象本身。

      537511