1、str == null;
2、"".equals(str);
3、str.length
4、str.isEmpty();
注意:length是屬性,一般集合類對象擁有的屬性,取得集合的大小。
例如:數組.length就是取得數組的長度。
length()是方法,一般字符串類對象有該方法,也是取得字符串長度。
例如:字符串.length();
說明:
1、null表示這個字符串不指向任何的東西,如果這時候你調用它的方法,那么就會出現空指針異常。
2、""表示它指向一個長度為0的字符串,這時候調用它的方法是安全的。
3.、null不是對象,""是對象,所以null沒有分配空間,""分配了空間,例如:
String str1 = null; str引用為空
String str2 = ""; str引用一個空串
str1還不是一個實例化的對象,而str2已經實例化。
對象用equals比較,null用等號比較。
如果str1=null;下面的寫法錯誤:
if(str1.equals("")||str1==null){ }
正確的寫法是 if(str1==null||str1.equals("")){ //所以在判斷字符串是否為空時,先判斷是不是對象,如果是,再判斷是不是空字符串 }
4. 所以,判斷一個字符串是否為空,首先就要確保他不是null,然后再判斷他的長度。
String str = xxx;
if(str != null && str.length() != 0) { }
5、str.isEmpty()判斷對象中內容是否為空;
6、TextUtils.isEmpty(str)與str.isEmpty()區別
就返回結果的情況來看,有一個區別,就是當 str 是空(null)或空串("")時 TextUtils.isEmpty(str) 返回 true,否則返回 false。而當空(null)時 str.isEmpty() 會空指針異常。
就效率上來看, str.isEmpty() 要比 TextUtils.isEmpty() 快,因為如果看官方源碼的話可以發現 TextUtils.isEmpty() 判斷了兩步,先判斷 == null,再判斷 .length == 0。而前者只判斷 .length == 0。
從結構上上看,TextUtils.isEmpty(str) 是一個靜態方法,而 str.isEmpty() 是 String 類的對象所擁有的方法。