我有一個字符串,它是從數據庫中讀取的。該字符串可以只是「null」。我需要決定它是否爲空?在以下幾個方面中,有什麼合適的方法來做到這一點?如何評估一個字符串是否爲空?
String a = …;
If (a == null)
If (a.length == 0)
我也看到類似
If a.equals(「 「)
這是如何工作的?
我有一個字符串,它是從數據庫中讀取的。該字符串可以只是「null」。我需要決定它是否爲空?在以下幾個方面中,有什麼合適的方法來做到這一點?如何評估一個字符串是否爲空?
String a = …;
If (a == null)
If (a.length == 0)
我也看到類似
If a.equals(「 「)
這是如何工作的?
if (a == null)
在Java中,==
比較引用,所以你可以檢查看參考指是否爲空。 a.length
和a.equals
會拋出NullPointerException s如果a
等於null,因爲您無法在null上調用方法。
當你比較字符串與equals,即:
爲真,當且僅當 參數不是null且是一個String對象 表示相同的字符序列 此對象。
所以即使我們能通話空等於(我們不能,如前所述),它永遠不會返回true反正根據文檔。
String.length只有在a
等於""
時才返回零,這是一個空字符串。根據方法:
返回此字符串的長度。 長度等於字符串中的Unicode代碼單元數 。
如有疑問,只需測試一下! :-)
這是你如何爲您在Java中的空String
值:
String a = ...;
if (a == null) {
// ...
}
下拋出一個NullPointerException
因爲是null
:
String a = null;
if (a.length() == 0) {
// ...
}
空字符串下面的檢查,這與null
不同! (如果a
是null
,它也將拋出NullPointerException
)
String a = ...;
if (a.equals("")) {
// ...
}
以下(類似於上文),用於容納單個空格字符一個一個字符串檢查。 (如果a
是null
,它也將拋出一個NullPointerException
)
String a = ...;
if (a.equals(" ")) {
// ...
}
這似乎是一些你可能只是簡單地測試,但在Java中使用
if(a == null) ...
來測試一個字符串是否是null
。
你的第二個例子應該是
if(a.length() == 0)
剛剛測試,看看是否字符串是空,不null
。值""
的長度爲0.如果a
確實是null
,則該示例會拋出異常,因爲您無法在Java中調用null
引用的方法。
您的最後一個示例是測試以查看字符串是否爲空格字符。
如果(一個!= NULL & &則爲a.length == 0) //那麼它是空
我會用if (a == null)
語義原因。在那裏,你很清楚你正在檢查一個空字符串。
這完全取決於數據庫庫如何解釋數據庫中的NULL值。
有些可能會將它們作爲null
字符串傳遞,有些可能會將它們作爲空字符串傳遞,有些可能會拋出異常 - 這完全取決於您如何配置以及使用的是什麼軟件。
不知道你正在使用哪個數據庫訪問器,這是不可能的。
如果字符串可以是實際值「空」,然後使用
if(a.equals("null"))
如果該對象可以設置爲null,則使用
if(a == null)
最好的辦法是將它們
結合if(a == null || a.equals("null"))
我使用...
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具有明確的含義,在編寫數據庫代碼時需要記住。
try{
methodWhichUsesTheString(a);
}catch (Exception NullPointerException){
//string a seems to be null
a = "Re-assign some desired value that would make things work" ;
}
如果您有:
String test = getIntent().getStringExtra("value");
您應該:
if (test.equalsIgnoreCase("null")){
dosomething...
}else {
dosomething...
}
它可能會更好前測試串*調用方法。 –
這只不過是一個測試,看是否調用該方法拋出NPE。這與參數是否爲空的問題完全正交。 (例如,如果方法是普通的舊setter,即使arg爲null,也不會有NPE;或者,即使arg不爲null,該方法也可以拋出NPE。) –