java--物件引用與物件的區別
阿新 • • 發佈:2019-01-02
一、前言
在java學習中,理解物件以及物件的引用是萬里長征的第一步。但是,現在大量的java學習書籍都將物件以及物件的引用混為一談,然而實際上它們有著本質的區別。為了幫助更多的java學者更好的理解,我將自己的學習理解記錄下來。如有理解不全或者錯誤的地方,歡迎大家批評指正。
二、分析物件引用與物件的區別
為了接下來進行更好的分析,我先建立一個Demo類,用於後面的分析。
2)末尾的()意味著,在物件建立後,立即呼叫Demo類的建構函式,對剛生成的物件進行初始化。
3)左邊的“Demo demo”建立了一個Demo類引用變數,它存放在棧空間中。也就是用來指向Demo物件的物件引用。
4)“=”操作符使物件引用指向剛建立的那個Demo物件。 當然這條語句我們也可以寫成:
三、物件引用與物件之間的關係 1)從物件引用出發: 一個物件引用可以指向一個物件
2)從物件出發: 一個物件可以被一個物件引用引用
public class Demo{
//預設構造方法
public Demo{
}
}
接下來,我們用Demo類來建立一個物件。
Demo demo=new Demo();
這一條語句,其實包括了四個動作:
1)右邊的“new Demo”,是以Demo類為模板,在堆空間裡建立一個Demo物件。2)末尾的()意味著,在物件建立後,立即呼叫Demo類的建構函式,對剛生成的物件進行初始化。
3)左邊的“Demo demo”建立了一個Demo類引用變數,它存放在棧空間中。也就是用來指向Demo物件的物件引用。
4)“=”操作符使物件引用指向剛建立的那個Demo物件。 當然這條語句我們也可以寫成:
這樣顯得更加清晰了。Demo demo;//建立物件引用 demo=/*將物件引用指向物件*/new Demo();//建立物件
三、物件引用與物件之間的關係 1)從物件引用出發: 一個物件引用可以指向一個物件
Demo demo;//一個物件引用
demo=new Demo();//一個物件引用指向一個物件
也可以不指向物件。
Demo demo;//建立物件引用,但是沒有指向物件
2)從物件出發: 一個物件可以被一個物件引用引用
Demo demo;//建立物件引用
demo=new Demo();//建立物件,並被一個物件引用指向
也可以被多個物件引用同時引用。
Demo demo1,demo2,demo3;//建立多個物件引用 demo1=new Demo(); demo2=demo1; demo3=demo2;//建立物件,並被多個物件引用指向