if(str == null || "".equals(null))和if(str == null || str.equals(""))有什么区别吗

时间:2021-04-18 16:12:56

if(str == null || "".equals(null))和if(str == null || str.equals(""))有什么区别吗 

 

 
如果str == null 为真,则前者if()中会返回false,后者if()会报空指针异常;
你这里使用的str字符串对象是null,表示没有指向任何对象,在执行str.equal()方法时,虚拟机会发现str不能调用其实例方法equals(),所以返回异常,表明这是一个需要引起注意的地方;反过来 "".equals(str),""不为null,而是一个字节为0的对象,所以不会抛出异常,一个不为空,一个为空,当然返回false;
再有,写str != null 没有错,但是最好养成 null != str的习惯,因为 null!=str 永远不会产生空指针异常,但其他的很容易产生,这也是极限编程建议的写法