仅当我的字符串具有有意义的值时,我才想执行某些操作。所以,我尝试了这个。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,尽管我的字符串为EMPTY,但我的程序仍然有效。等于null。那么,这有什么问题呢?添加:我找到了问题的原因。该变量被声明为字符串,结果,null分配给该变量的结果被转换为"null"!因此,if (!myString.equals("null"))作品。
3 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
if (myString != null && !myString.isEmpty()) {
// doSomething
}
作为进一步的评论,您应该在equals合同中知道这个术语:
来自Object.equals(Object):
对于任何非null的参考值x,x.equals(null)应为return false。
与之比较的方法null是使用x == null和x != null。
此外,x.field并x.method()抛出NullPointerException如果x == null。
ABOUTYOU
TA贡献1812条经验 获得超5个赞
如果myString是null,则调用myString.equals(null)或myString.equals("")将失败,并显示NullPointerException。您不能在null变量上调用任何实例方法。
首先检查null是否是这样的:
if (myString != null && !myString.equals("")) {
//do something
}
这将利用短路评估来避免.equalsif myString检查失败。
添加回答
举报
0/150
提交
取消