仅当我的字符串具有有意义的值时,我才想执行某些操作。所以,我尝试了这个。
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
}
在所有情况下,我的程序 doSomething
尽管我的字符串是空的。它等于 null
。那么,这有什么问题呢?
添加:
我找到了问题的原因。该变量被声明为字符串,因此,分配给该变量的 null
被转换为 "null"
!所以, if (!myString.equals("null"))
有效。
原文由 Roman 发布,翻译遵循 CC BY-SA 4.0 许可协议
作为进一步的评论,您应该知道
equals
合同中的这个术语:来自
Object.equals(Object)
:与
null
比较的方法是使用x == null
和x != null
。此外,
x.field
和x.method()
抛出NullPointerException
如果x == null