java之對象引用與對象的區別

一、前言
       在java學習中,理解對象以及對象的引用是萬里長征的第一步。但是,現在大量的java學習書籍都將對象以及對象的引用混爲一談,然而實際上它們有着本質的區別。爲了幫助更多的java學者更好的理解,我將自己的學習理解記錄下來。如有理解不全或者錯誤的地方,歡迎大家批評指正。
二、分析對象引用與對象的區別
       爲了接下來進行更好的分析,我先建立一個Demo類,用於後面的分析。
      
[java] view plain copy
  1.  public class Demo{  
  2.     //默認構造方法  
  3.     public Demo{  
  4.     }  
  5. }  
       接下來,我們用Demo類來創建一個對象。
[java] view plain copy
  1. Demo demo=new Demo();  
       這一條語句,其實包括了四個動作:
                1)右邊的“new Demo”,是以Demo類爲模板,在堆空間裏創建一個Demo對象。
                2)末尾的()意味着,在對象創建後,立即調用Demo類的構造函數,對剛生成的對象進行初始化。 
                3)左邊的“Demo demo”創建了一個Demo類引用變量,它存放在棧空間中。也就是用來指向Demo對象的對象引用。 
                4)“=”操作符使對象引用指向剛創建的那個Demo對象。
      
      當然這條語句我們也可以寫成:
[java] view plain copy
  1. Demo demo;//創建對象引用  
  2. demo=/*將對象引用指向對象*/new Demo();//創建對象  
      這樣顯得更加清晰了。

三、對象引用與對象之間的關係
       1)從對象引用出發:
             一個對象引用可以指向一個對象        
[java] view plain copy
  1. Demo demo;//一個對象引用  
  2. demo=new Demo();//一個對象引用指向一個對象  
           也可以不指向對象。  
[java] view plain copy
  1. Demo demo;//創建對象引用,但是沒有指向對象  

       2)從對象出發:
             一個對象可以被一個對象引用引用
[java] view plain copy
  1. Demo demo;//創建對象引用  
  2. demo=new Demo();//創建對象,並被一個對象引用指向  
             也可以被多個對象引用同時引用。
[java] view plain copy
  1. Demo demo1,demo2,demo3;//創建多個對象引用  
  2. demo1=new Demo();  
  3. demo2=demo1;  
  4. demo3=demo2;//創建對象,並被多個對象引用指向  
發佈了38 篇原創文章 · 獲贊 16 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章