str == null //判斷引用是否指向任何對象
str.length == 0 //判斷引用指向的對象是否為空字符串,即字符串長度為0
“”.equals(str) //判斷引用指向的對象是否為空字符串和str.length()==0效果是一樣的。
在C/C++里, str其實是一個指針, null表示空指針, str==null表示該字符串指針沒有指向任何一個字符串. ""表示是空字符串, 空字符串也是字符串, 也在內存中占有位置, str.equals("")表示這個str指向了一個字符串, 且該字符串的內容是一個空字符串.
可以通過打印str的內存地址就可以看出null和""是不同的;
java也是類似的.
而且在C/C++中, 如果不先判斷str不為空就直接使用str的方法, 是會出錯的, 因為str還沒有被初始化為String類的實例;
但str是null時,str.equals(“”)和str.length==0將拋java.lang.NullPointerException異常。
因為equals是對象的方法
所以最好使用 “”.equals(str)形式
“”.equals(null) //false
str==null || str.length()==0 兩個一起寫可以避免str=null時,拋異常。
但最好還是寫成:
str != null && !”“.equals(str)
str ==null || “”.equals(str)