最近工作上事情稍微少一些,閒下來突然想起一個問題:當一個對象爲 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是沒有分配空間。這樣就很好理解,面試的時候也好解釋(面試經典題目之一)。