1个回答
展开全部
如果str == null 为真,则前者if()中会返回false,后者if()会报空指针异常;
你这里使用的str字符串对象是null,表示没有指向任何对象,在执行str.equal()方法时,虚拟机会发现str不能调用其实例方法equals(),所以返回异常,表明这是一个需要引起注意的地方;反过来 "".equals(str),""不为null,而是一个字节为0的对象,所以不会抛出异常,一个不为空,一个为空,当然返回false;
再有,写str != null 没有错,但是最好养成 null != str的习惯,因为 null!=str 永远不会产生空指针异常,但其他的很容易产生,这也是极限编程建议的写法
你这里使用的str字符串对象是null,表示没有指向任何对象,在执行str.equal()方法时,虚拟机会发现str不能调用其实例方法equals(),所以返回异常,表明这是一个需要引起注意的地方;反过来 "".equals(str),""不为null,而是一个字节为0的对象,所以不会抛出异常,一个不为空,一个为空,当然返回false;
再有,写str != null 没有错,但是最好养成 null != str的习惯,因为 null!=str 永远不会产生空指针异常,但其他的很容易产生,这也是极限编程建议的写法
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询