java中空串""與null的區別與判斷
阿新 • • 發佈:2019-01-28
要判讀String是否為空字串,比較簡單,只要判斷該String的length是否為0就可以,或者直接用方法isEmpty()來判斷。
dosomething();
}
或者
if(!"".equals(name)){//將“”寫在前面,不管name是否為null,都不會報錯
dosomething();
}
但很多時候我們也會把由一些不可見的字元組成的String也當成是空字串(e.g, space, tab, etc),這時候就不能單用length或isEmpty()來判斷了,因為technically上來說,這個String是非空的。這時候可以用String的方法trim(),去掉前導空白和後導空白,再判斷是否為空。
例:
publicclass TestEmpty
{
publicstaticvoid main(String[] args){
String a ="";// if (a.isEmpty())if (a.trim().isEmpty())
{
System.out.println("It is empty");
}else{
System.out.println("It is not empty");
} } }
結果:It is empty
宣告一個String str
如果說str是null,那麼記憶體根本沒有建立字串物件,並由str引用。
如果說str是空串,那麼確定存在一個由str引用的字串物件,只不過這個字串的值是空
null用來表示沒有例項存在,而“”本身就是一個例項,有自己的物件空間,和“123456”這樣的字串沒有區別。
其次要注意:
1)當oracle 欄位裡面的值為空時,從oracle讀出來的是字串"null"(可能是程式讀出來的時,將空物件轉換成為了字串“null”)。
(2)還有URL得引數時如:oylin.jsp?id=<%=id%>,當id為空物件是,有可能也將空物件轉換成為了字串“null”,在寫程式的時候要多加註意。 另一個問題就是String的null或控制的判斷處理:有以下兩種方法 (name != null && !name.equals("")){