如何检查我的字符串是否等于空值?

仅当我的字符串具有有意义的值时,我才想执行某些操作。所以,我试过了这个。

if (!myString.equals("")) {
doSomething
}

和这个

if (!myString.equals(null)) {
doSomething
}

和这个

if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}

和这个

if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}

和这个

if ( myString.length()>0) {
doSomething
}

在所有情况下,我的程序都考虑到我的字符串是空的。它等于 。那么,这有什么问题呢?doSomethingnull

添加:

我找到了问题的原因。该变量被声明为字符串,因此,分配给此变量的变量被转换为 !所以,工作。null"null"if (!myString.equals("null"))


答案 1
if (myString != null && !myString.isEmpty()) {
  // doSomething
}

作为进一步的评论,您应该了解合同中的以下条款:equals

From Object.equals(Object)

对于任何非空引用值,应 。xx.equals(null)return false

比较的方法是使用 和 。nullx == nullx != null

此外,如果 抛出 .x.fieldx.method()NullPointerExceptionx == null


答案 2

如果 是 ,则调用 或 将失败,并显示 。不能对空变量调用任何实例方法。myStringnullmyString.equals(null)myString.equals("")NullPointerException

首先检查空值,如下所示:

if (myString != null && !myString.equals("")) {
    //do something
}

这样可以利用短路评估来避免尝试 if 未通过空值检查。.equalsmyString