开发者社区> 问答> 正文

字符串判断为空问题 求大神解释?报错

为什么我在第一次访问action的时候

String username request.getparameter("username");

if(!user.equals(null)){//这里就包控指针异常呢

}

而这么判断就不报错呢

!(username == null || username.equals(""))

 

大神求解

展开
收起
爱吃鱼的程序员 2020-06-20 19:34:15 498 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    当 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呢
    2020-06-20 19:34:31
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载