为什么我在第一次访问action的时候
String username request.getparameter("username");
if(!user.equals(null)){//这里就包控指针异常呢
}
而这么判断就不报错呢
!(username == null || username.equals(""))
大神求解
当 user时null的时候,null是没有equals成员函数的, user.equals肯定报空指针错误。
但是下面的是先判断 username 是不是null,如果是null就不会再执行 username.equals("")了(||是短路或),而如果 username 不是null,那执行 username.equals("")自然就没错了。
首先,判断空不用.equals(null)而用==null
其次,if(username==null|| username.equals(""))这样的写法中,隐含着运算顺序,先计算第一个等式,就是说必须要满足usename不为空,才会执行username.equals(""),这样就确保了不会出现空指针引用。
使用.equals()方法的前提,必须是对象不为null。如果对象本身都没有初始化,哪里来的方法和属性呢?
回复 @瓣挚锅:使用.equals()方法的前提,必须是对象不为null。如果对象本身都没有初始化,那么在判断的时候,就只有==和!=了。为啥必须==null呢版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。