之前遇到了这样的问题:判断字符串不为空,if(!str.equals(""))&&str!=null)的写法有没有问题?
现在在这里说明一下个人理解。
有的人在代码中经常这样写,if(str!=null&&str!=""),判断空字符串跟null 都不用equals。
首先,str!=""
这种写法是错误的,要写成!str.equals("").。
其次,要明白==
与equals
的含义
-
==
表示两个对象是同一个对象的引用,==null
表示这个对象不是任何实例对象的引用,该对象为空。 -
equals
是String类中的方法,表示两个字符串的内容相同。
那么回到最开始的问题,判断字符串不为空,if(!str.equals(""))&&str!=null)的写法有没有问题?
答案是有问题的,会存在java.lang.NullPointerException空指针异常:假如str的值为null,当调用equals()
方法将会抛出异常。
public class StringEquals {
public static void main(String[] args) {
String str = null;
if(!str.equals("")&&str!=null) {
System.out.println("ok");
}
}
}
所以正确写法是:
if(!"".equals(str)&&str!=null)