Java 中 String 的 isEmpty() 與 null 與 "" 區別解析

問:簡單說說 String 的 isEmpty() 與 null 與 "" 的區別?

答:回答這個問題的最好答案就是代碼舉例。

Java 中 String 的 isEmpty() 與 null 與

上面程序段的運行結果如下:

Java 中 String 的 isEmpty() 與 null 與

通過程序段運行結果可以看到,a 被分配了內存空間且值為空,是一種有值的絕對空;b 被分配了內存空間且值為空字符串,是一種有值的相對空;c 未分配內存空間且無值,是一種無值狀態。

所以判斷一個 String 變量是否是空對象使用其與 null 進行 == 比較,不能使用 equals()、isEmpty()、"" 等進行判斷,因為空對象還未被實例化。

而對於 String 的空值判斷可以採用三種方法,equals("") 方法比較對象的內容是否為空值,length() == 0 來判斷 String 的字符個數是否空值;isEmpty() 方法來判斷 String 對象的字符個數是否為空值(其實現原理等價於 length() == 0 )。

對於空格字符串,雖然在輸出顯示時候和空值一樣,都是空的,但是在運行時空格字符串表示該對象的內存空間裡面有內容(是空格,字符個數是空格個數),所以在使用 length() 輸出時值為空格個數,使用 isEmpty() 輸出為 false,使用 equals("") 判斷為 false。

對於 String 的 + 操作符來說,如果有一個操作數是 String,其他操作數會被轉換成 String。特別注意,null 與字符串 "XXXX" + 操作會變成 "nullXXXX"。


分享到:


相關文章: