[英]How to handle null string in java
我是 .net 程序員,完全是 Java 新手。 我在處理 java 中的空字符串時遇到問題。 我正在將字符串數組中的值分配給字符串變量完成日期。 我嘗試了所有這些,但沒有奏效。
String COMPLETEDATE;
COMPLETEDATE = country[23];
if(country[23] == null && country[23].length() == 0)
{
// ...
}
if (COMPLETEDATE.equals("null"))
{
// ...
}
if(COMPLETEDATE== null)
{
// ...
}
if(COMPLETEDATE == null || COMPLETEDATE.equals("null"))
{
// ...
}
對於初學者......將String
與潛在的null
值進行比較的最安全方法是首先放置保證的非空String
,然后調用.equals
:
if("constantString".equals(COMPLETEDDATE)) {
// logic
}
但總的來說,你的方法是不正確的。
第一個,正如我所評論的,總是會生成一個NullPointerException
,它是通過country[23] == null
評估的。 如果它是null
,則它沒有.length
屬性。 您可能打算改為調用country[23] != null
。
第二種方法僅將其與文字字符串"null"
進行比較,鑒於您的程序范圍,這可能是也可能不是。 此外,如果COMPLETEDDATE
本身為空,它將失敗 - 在這種情況下,您將按照我上面的描述進行糾正。
您的第三種方法是正確的,因為它是唯一檢查null
。 但是,通常情況下,如果您想要的對象不是null
,您會想要做一些邏輯。
你的第四種方法偶然是正確的; 如果COMPLETEDDATE
實際上為null
,則OR
將短路。 如果COMPLETEDDATE
等於文字"null"
,也可能是真的。
不完全清楚您在問什么,但要檢查 String 變量是否為空,請使用以下語句。
if(myString==null)
這將檢查對象引用是否為空。
您所寫的以下陳述是不正確的,原因有兩個。
if (COMPLETEDATE.equals("null"))
{
// ...
}
1. null
是Java中的關鍵字, "null"
只是一個文本字符串。
2. .equals()
根據給定方法的相等定義檢查兩個對象是否相等。 應始終使用 == 比較運算符進行空檢查,因為它檢查引用相等性。
如果變量為空,則不能取消引用它。
這意味着你不能調用它的方法。
所以......每次第一個子句為真時,以下 if 語句將拋出 NullPointerException :
if (a == null && a.length() == 0)
換句話說:如果a
為空,則不能在a
上調用 length 方法。
要檢查空字符串,您可以在 Java 8 中使用Optional ,如下所示:
import java.util.Optional;
如上導入
String str= null;
Optional<String> str2 = Optional.ofNullable(str);
然后使用isPresent() ,如果 str2 包含 NULL 則返回 false 否則返回 true
if(str2.isPresent())
{
//If No NULL
}
else
{
//If NULL
}
參考: https : //docs.oracle.com/javase/8/docs/api/java/util/Optional.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.