物件與物件引用的區別

Wayne-L同學發表於2020-10-03

物件與物件引用的區別

直接舉例子吧,從例子中更容易理解物件與物件引用的區別
先建立一個Demo類,用於後面的分析。

 public class Demo{
    //預設構造方法
    public Demo{
    }
}

接下來,我們用Demo類來建立一個物件。

Demo demo=new Demo();

這一條語句,其實包括了四個動作:
1)右邊的“new Demo”,是以Demo類為模板,在堆空間裡建立一個Demo物件。
2)末尾的()意味著,在物件建立後,立即呼叫Demo類的建構函式,對剛生成的物件進行初始化。
3)左邊的“Demo demo”建立了一個Demo類引用變數,它存放在棧空間中。也就是用來指向Demo物件的物件引用。
4)“=”操作符使物件引用指向剛建立的那個Demo物件。

總結:

a)從物件引用出發:
一個物件引用可以指向一個物件


Demo demo;//一個物件引用
demo=new Demo();//一個物件引用指向一個物件

也可以不指向物件。

Demo demo;//建立物件引用,但是沒有指向物件

b)從物件出發:
一個物件可以被一個物件引用引用


Demo demo;//建立物件引用
demo=new Demo();//建立物件,並被一個物件引用指向

也可以被多個物件引用同時引用。

Demo demo1,demo2,demo3;//建立多個物件引用
demo1=new Demo();
demo2=demo1;
demo3=demo2;//建立物件,並被多個物件引用指向

相關文章