H5W3
当前位置:H5W3 > 其他技术问题 > 正文

jsp为什么单独判断action.equals("login")会报错?

String action = request.getParameter("action");
    if(action != null && action.equals("login")){
        out.println("login");
    }

以上代码是正常的。。
但是下面的代码就报错了

String action = request.getParameter("action");
    if(action.equals("login")){
        out.println("login");
    }

单独equals判断就报错。为什么啊。?

回答:

"login".equals(action)最妥当。

回答:

这是因为如果请求参数没有action的话,变量action的值就会是null,对一个null值调用equal方法是错误的,它不是一个字符串对象,而上面判断了action!=null,用的是and操作符,成立的时候才会执行后面的equal操作就不会报错了

回答:

报错的时候,action == null

回答:

这个涉及到&&和||的短路操作,一旦第一个操作数足以确定&&或者||的结果,就不会进行下一个操作数的计算求值

if(action != null && action.equals("login"))

上面的代码翻译成自然语言是action存在,且等于login,一旦action != null没有通过,就不需要判断是否等于login了,后面的调用并没有被执行,自然不会报错,而你后面单独调用

if(action.equals("login"))

并没有检查变量的合法性就调用它的方法,肯定会出错

回答:

楼上同学说得很清晰了,当action=null时,直接调用action.equals("login")会报空指针异常,建议直接使用"login".equals(action),语义与action != null && action.equals("login")一致,当actionnull时,定义为不相等。

本文地址:H5W3 » jsp为什么单独判断action.equals("login")会报错?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址