Java中物件和引用的具體區別
- java語言
- 關注:3.06W次
初學Java的人,可能在在很長一段時間裡,對物件和引用的基本概念都是很模糊的,老是分不清楚兩者的區別。下面,應屆畢業生小編給你整理一些有關物件和引用的區別供有需要的人蔘考。
一、物件與引用的概念
首先小編先解釋一條程式碼更你更快的瞭解物件和引用的概念區別。
Vehicle veh1 = new Vehicle();
通常把這條語句的動作稱之為建立一個物件,其實,它包含了三個動作。
1)右邊的“new Vehicle()”,即新建物件本身;
2)左邊的“Vehicle veh1”建立了一個Vehicle類的引用變數或稱物件引用變數。
所謂Vehicle類引用,就是以後可以用來指向Vehicle物件的物件引用。
3)“=”操作符使物件引用指向剛建立的那個Vehicle物件。
我們可以把這條語句拆成兩部分:
Vehicle veh1;
veh1 = new Vehicle();
效果是一樣的。這樣寫,就比較清楚了,有兩個實體:一是物件引用變數,一是物件本身。
可以這麼說,在Java裡都是通過引用來操縱物件的。 這就是兩者的區別。
二、物件和引用的具體區別
相互關聯體現在:
1)當物件的引用變數指向物件時,他們兩就聯絡起來,改變引用的屬性,就會改變物件的屬性;
2)如果同一個物件被多個引用變數引用的話,則這些引用變數將共同影響這個物件本身。
相互獨立體現在:
3)一個物件可以被不同的引用變數操縱,同時一個引用變數也可以指向不同的物件,但是同一時刻只能指向一個物件;
4)從儲存空間上來說,物件和引用也是獨立的,物件一般儲存在堆中,而引用儲存在堆疊(儲存速度更快)中。
三、小編舉例
為了加深大家的理解,小編再舉一個例子具體說明一下兩者的區別。
class Vehicle {
int passengers;
int fuelcap;
int mpg;
}
有了這個模板,就可以用它來建立物件,Vehicle veh1 = new Vehicle();
通常把這條語句的動作稱之為建立一個物件,其實,它包含了四個動作。
1)右邊的'“new Vehicle”,是以Vehicle類為模板,在堆空間裡建立一個Vehicle類物件(也簡稱為Vehicle物件)。
2)末尾的()意味著,在物件建立後,立即呼叫Vehicle類的建構函式,對剛生成的物件進行初始化。建構函式是肯定有的。如果你沒寫,Java會給你補上一個預設的建構函式。
3)左邊的“Vehicle veh1”建立了一個Vehicle類引用變數。所謂Vehicle類引用,就是以後可以用來指向Vehicle物件的物件引用。
4)“=”操作符使物件引用指向剛建立的那個Vehicle物件。
我們可以把這條語句拆成兩部分:
Vehicle veh1;
veh1 = new Vehicle();
效果是一樣的。這樣寫,就比較清楚了,有兩個實體:一是物件引用變數,一是物件本身。
- 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-tw/jsj/java/r20grk.html