1. 程式人生 > >java中空串""與null的區別與判斷

java中空串""與null的區別與判斷

要判讀String是否為空字串,比較簡單,只要判斷該String的length是否為0就可以,或者直接用方法isEmpty()來判斷。

    但很多時候我們也會把由一些不可見的字元組成的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("")){
    dosomething(); } 或者 if(!"".equals(name)){//將“”寫在前面,不管name是否為null,都不會報錯    dosomething(); }