如何检查我的字符串是否等于null?
问题
我想只在我的字符串有一个有意义的值时执行一些操作。所以,我试过这个。
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
}
在所有情况下,我的programdoSomething
尽管我的字符串是EMPTY。它等于null
。那么,那有什么问题呢?
ADDED:
我找到了问题的原因。变量被声明为一个字符串,因此,null
分配给这个变量被转换为"null"
!所以,if (!myString.equals("null"))
works。
#1 热门回答(202 赞)
if (myString != null && !myString.isEmpty()) {
// doSomething
}
作为进一步的评论,你应该知道4979791767合同中的这个术语:
FromObject.equals(Object)
:
对于任何非空引用值x,x.equals(null)应返回false。
与null
进行比较的方法是使用x == null
和x != null
。
此外,x.field
andx.method()
throwsNullPointerException
ifx == null
。
#2 热门回答(26 赞)
如果myString
isnull
,则调用myString.equals(null)
或myString.equals("")
将失败aNullPointerException
。你不能在null变量上调用任何实例方法。
首先检查null,如下所示:
if (myString != null && !myString.equals("")) {
//do something
}
这使得使用short-circuit evaluation不会尝试.equals
ifmyString
失败的空检查。
#3 热门回答(16 赞)
Apache commonsStringUtils.isNotEmpty
是最好的方法。