我们可以依赖String.isEmpty来检查Java中String的空状态吗?

时间:2012-01-23 10:11:09

标签: java string

我从一个XML文件传递一个accountid作为输入,如下所示,稍后将对其进行解析并将在我们的代码中使用:

<accountid>123456</accountid>
<user>pavan</user>

问题是如果没有传递任何内容(accoutnid中的空值)作为accountid传递,我无法在Java代码中处理这种情况。我试过了,但我没有成功:

if (acct != null||acct==""||acct.equals("")) 
{
    // the above is not working 
}

我能够使用以下方法成功处理此问题:

if(!acct.isEmpty())
{
   // thisis working 
}

我们可以依靠String.isEmpty()方法检查String的空状态吗?这有效吗?

6 个答案:

答案 0 :(得分:107)

不,绝对不是 - 因为如果acct为空,它甚至不会 isEmpty ...它会立即抛出NullPointerException

您的测试应该是:

if (acct != null && !acct.isEmpty())

请注意,此处使用&&,而不是之前代码中的||;另请注意,在您之前的代码中,您的条件无论如何都是错误的 - 即使使用&&,如果if 为空字符串,您也只会输入acct正文

或者,使用Guava

if (!Strings.isNullOrEmpty(acct))

答案 1 :(得分:18)

使用StringUtils.isEmpty代替,它也会检查是否为空。

例如:

 StringUtils.isEmpty(null)      = true
 StringUtils.isEmpty("")        = true
 StringUtils.isEmpty(" ")       = false
 StringUtils.isEmpty("bob")     = false
 StringUtils.isEmpty("  bob  ") = false

有关official Documentation on String Utils的更多信息,请参阅

答案 2 :(得分:6)

如果为String.isEmpty(),则无法使用public static boolean isBlankOrNull(String str) { return (str == null || "".equals(str.trim())); } 。最好的方法是使用自己的方法来检查null或为空。

{{1}}

答案 3 :(得分:1)

String s1=""; // empty string assigned to s1 , s1 has length 0, it holds a value of no length string

String s2=null; // absolutely nothing, it holds no value, you are not assigning any value to s2

所以null与empty不同。

希望有所帮助!!!

答案 4 :(得分:1)

不,String.isEmpty()方法如下所示:

public boolean isEmpty() {
    return this.value.length == 0;
}

你可以看到它检查字符串的长度 所以你必须先检查字符串是否为空。

答案 5 :(得分:0)

我认为您想要的更简短的答案是: StringUtils.isBlank(acct);

从文档中: http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#isBlank%28java.lang.String%29

isBlank
public static boolean isBlank(String str)
Checks if a String is whitespace, empty ("") or null.

 StringUtils.isBlank(null)      = true
 StringUtils.isBlank("")        = true
 StringUtils.isBlank(" ")       = true
 StringUtils.isBlank("bob")     = false
 StringUtils.isBlank("  bob  ") = false
 
Parameters:
str - the String to check, may be null
Returns:
true if the String is null, empty or whitespace