究竟什麼樣的對象纔會是null?

最近工作上事情稍微少一些,閒下來突然想起一個問題:當一個對象爲 null時,是他的某一部分屬性爲null,還是所有屬性都爲null?我相信有不少人在這裏會繞進去,雖然我之前理解過String的null和“”的區別。

 

其實,比如我要聲明一個user對象。如果使用默認的構造方法,那麼所有的屬性均未賦值(我爲了測試,專門寫了參數全部爲string類型的構造器)。也就是說,Useruser = new User();創建的時候,所有屬性均未賦值。判斷對象,結果是不爲null。

另外,創建全局變量user,判斷是否爲null,結果是。

 

不使用new關鍵字創建的全局變量,只是聲明瞭,但是並沒有分配內存空間。所以爲null

使用new創建的對象,已經分配了內存空間,只是屬性沒有賦值。

 

因此,可以清楚瞭解,一個對象的屬性即使所有屬性均未賦值,他依然不爲null。

下面在稍微帶一下String中null和“”的區別。

String str = "";

String var = null;

其實,同上。空字符串是分配了空間,賦值“”。Null是沒有分配空間。這樣就很好理解,面試的時候也好解釋(面試經典題目之一)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章