簡體   English   中英

java中如何處理空字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM