2011-06-22 45 views
-3

我有一個字符串,它是從數據庫中讀取的。該字符串可以只是「null」。我需要決定它是否爲空?在以下幾個方面中,有什麼合適的方法來做到這一點?如何評估一個字符串是否爲空?

String a = …; 
If (a == null) 

If (a.length == 0) 

我也看到類似

If a.equals(「 「) 

這是如何工作的?

回答

4

if (a == null)

在Java中,==比較引用,所以你可以檢查看參考指是否爲空。 a.lengtha.equals會拋出NullPointerException s如果a等於null,因爲您無法在null上調用方法。

當你比較字符串與equals,即:

爲真,當且僅當 參數不是null且是一個String對象 表示相同的字符序列 此對象。

所以即使我們通話空等於(我們不能,如前所述),它永遠不會返回true反正根據文檔。

String.length只有在a等於""時才返回零,這是一個空字符串。根據方法:

返回此字符串的長度。 長度等於字符串中的Unicode代碼單元數 。

如有疑問,只需測試一下! :-)

2

這是你如何爲您在Java中的空String值:

String a = ...; 
if (a == null) { 
    // ... 
} 

下拋出一個NullPointerException因爲是null

String a = null; 
if (a.length() == 0) { 
    // ... 
} 

空字符串下面的檢查,這與null不同! (如果anull,它也將拋出NullPointerException

String a = ...; 
if (a.equals("")) { 
    // ... 
} 

以下(類似於上文),用於容納單個空格字符一個一個字符串檢查。 (如果anull,它也將拋出一個NullPointerException

String a = ...; 
if (a.equals(" ")) { 
    // ... 
} 
2

這似乎是一些你可能只是簡單地測試,但在Java中使用

if(a == null) ... 

來測試一個字符串是否是null

你的第二個例子應該是

if(a.length() == 0) 

剛剛測試,看看是否字符串是,不null。值""的長度爲0.如果a確實是null,則該示例會拋出異常,因爲您無法在Java中調用null引用的方法。

您的最後一個示例是測試以查看字符串是否爲空格字符。

0

如果(一個!= NULL & &則爲a.length == 0) //那麼它是空

0

我會用if (a == null)語義原因。在那裏,你很清楚你正在檢查一個空字符串。

1

這完全取決於數據庫庫如何解釋數據庫中的NULL值。

有些可能會將它們作爲null字符串傳遞,有些可能會將它們作爲空字符串傳遞,有些可能會拋出異常 - 這完全取決於您如何配置以及使用的是什麼軟件。

不知道你正在使用哪個數據庫訪問器,這是不可能的。

0

如果字符串可以是實際值「空」,然後使用

if(a.equals("null")) 

如果該對象可以設置爲null,則使用

if(a == null) 

最好的辦法是將它們

結合
if(a == null || a.equals("null")) 
1

我使用...

if(string == null || string.trim.length() == 0) { 
// string is null or empty 
} 

這就是說,還有數據庫中的NULL值,您應該在通過ResultSet時檢查。如...

String nameVal = rs.getString ("name"); 
    if (rs.wasNull()) 
     nameVal = "(no name available)"; 

對於Nullable列,SQL是三態的。一列可以有一個值,一列可以是NULL或一列可以包含一個空字符串。 NULL具有明確的含義,在編寫數據庫代碼時需要記住。

-2
try{ 
    methodWhichUsesTheString(a); 
}catch (Exception NullPointerException){ 
    //string a seems to be null 
    a = "Re-assign some desired value that would make things work" ; 
} 
+0

它可能會更好前測試串*調用方法。 –

+0

這只不過是一個測試,看是否調用該方法拋出NPE。這與參數是否爲空的問題完全正交。 (例如,如果方法是普通的舊setter,即使arg爲null,也不會有NPE;或者,即使arg不爲null,該方法也可以拋出NPE。) –

0

如果您有:

String test = getIntent().getStringExtra("value"); 

您應該:

if (test.equalsIgnoreCase("null")){ 
     dosomething... 
}else { 
     dosomething... 
}