jsp为什么单独判断action.equals("login")会报错?
威尼斯人娱乐城
威尼斯人娱乐城
当前位置 : 威尼斯人娱乐城 > 威尼斯人娱乐城

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

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

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

String action = request.getParameter"action";
    ifaction.equals"login"{
        out.println"login";
    }

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

"login".equalsaction最妥当。

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

报错的时候,action == null

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

ifaction != null && action.equals"login"

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

ifaction.equals"login"

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

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

栏目列表

广告位

威尼斯人娱乐城