java中,只聲明一個對象不賦值,與聲明一個對象並賦為 null 的區別


比如:

public MainGame   mMainGame ; 與 public MainGame   mMainGame = null;這兩句的區別?


編譯的時候會不同,未賦值,直接使用編譯時會報錯。

不賦值就不會分配空間,賦值null會分配0大小的初始空間.


 

局部變量要賦初始值,全局變量不需要賦初始值;還有int a=null;這句,應該是Integer a=null;
  • 如果在類中聲明變量可以不賦值,構造對象時會獲得默認值

  • 如果在方法中聲明變量,必須賦初始值

作為成員變量來說 int a;默認值為0 ,然而 int a=null;在java這是不正確的;int 為基本類型;
只有 封裝類型 Integer 的默認值 為null 所以 你可以寫成int a ;(0) Integer a;(null)
java中對象引用放在棧中,對象的實例放於堆中,如果為null,說明只在棧中。
 
        
首先要明白,java里對象傳遞的時候,傳遞的都是引用(也就是對象的地址),這比傳遞整個對象高效的多。而基礎類型,int,double等傳遞的才是值。 比如,(new ArrayList<String>).add(new String("hello")),jvm只是把new String("hello")的地址存入到了列表list里面。String str = new String("Test"),是開辟內存放入了對象,並把它的引用賦給str。 同理,BookInfo bookinfo=null與BookInfo bookinfo=new BookInfo():前者,是聲明了一個對象(的引用),jvm並沒有開辟內存放入一個對象;而后者,在聲明了一個對象的引用后,又把新開辟的沒有存儲任何有效值的對象的地址賦給了他。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM