以下代码有效:
String myString = null;
if (myString != null && myString.length()> 0 ) {
System.out.println("this is NOT null");
}
else{
System.out.println("yes this is NULL!!");
}
输出:是的,这是NULL !!
但是,以下内容会出错:
String myString = null;
if ( myString.length()> 0 ) {
System.out.println("this is NOT null");
}
else{
System.out.println("yes this is NULL!!");
}
为什么if条件需要2个条件来检查此字符串是否为空?
答案 0 :(得分:6)
它没有。只有这个
myString != null
检查String
值是否为null
。
这个
myString.length()> 0
尝试取消引用String
值,以便调用引用的实例length()
方法。如果值为null
,则会引发NullPointerException
。
为什么if条件需要2个条件来检查此字符串是否为空?
您的第一个条件检查值是否为null
。如果它不是(&&
短路),则第二个条件会检查String
是否为空。
答案 1 :(得分:0)
您正在尝试对NULL引用使用length()方法,而NULL引用不是对象。通过检查
使用mystring != null && mystring.length() > 0
你只检查mystring变量,看它是否为null并退出if条件,而不调用length方法。
有趣的事实(注意单&):
`mystring != null & mystring.length() > 0`
还会给你一个NullPointerException,因为两个条件都会被评估。
如果你想要正确地做,你必须检查两个条件(!= null&& length),或者你可以使用。