确定string是否为null由于某种原因需要2个参数

时间:2014-12-09 17:05:37

标签: java android

以下代码有效:

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个条件来检查此字符串是否为空?

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),或者你可以使用。