问一个简单问题: if (key!=null && key.equals("TT")) 与if (key.equals("TT") && key!=null)这样的条件是相同的么?

blackfiles 2002-08-21 10:55:18
在我写的JSP中:
if (key.equals("TT") && key!=null)
{
out.print("<font color='red'>hello</font>");
}
这样就会抱错. 而
if (key!=null && key.equals("TT"))
{
out.print("<font color='red'>hello</font>");
}
就会执行。。。
这两个比较条件是不同么???
...全文
120 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
beming 2002-08-21
  • 打赏
  • 举报
回复
你有没有对key初始化啊,这是关键!
blackfiles 2002-08-21
  • 打赏
  • 举报
回复
当我输入TT,使key=“TT”时,这两个的比较应该是符合的啊?并没有null的存在啊? 请在解释下。
namowen 2002-08-21
  • 打赏
  • 举报
回复
&&是短路与,这点上面两位说得很明白了。可报错似乎不应该啊。试试定义key时初始化吧。
duodonglai 2002-08-21
  • 打赏
  • 举报
回复
如果 key = null 你的前一个判断条件就会出现异常,因为调用key.equals("TT"),key对象根本就不存在,当然也就不能调用他的方法了。而第二个呢,当key = null 的时候,就不再作key.equals("TT")的调用了,这好像就是所谓的短路求值的方法。
eptprogrammer 2002-08-21
  • 打赏
  • 举报
回复
是不一样的,对于A && B 这样的布尔表达式,先计算A,若A为false,则不会计算B,其实可以用下面的语句来表达这种'短路':
A && B <=> if(A)
{
if(B) return true;
else return false;
}
else return false;
据我所知,C++,java里面都是这种语意,
joe2002 2002-08-21
  • 打赏
  • 举报
回复
也就是很基本的与或非操作。
记得java里面是从前向后,从左到右执行的,对于或操作,前一个条件满足了的话,第二个条件是不执行的。
joe2002 2002-08-21
  • 打赏
  • 举报
回复
或者你可以反过来写;

if (key == null || key.equals(""))
{
//key is null or key==""
}
else {
out.print("<font color='red'>hello</font>");
}
Joeblackyang 2002-08-21
  • 打赏
  • 举报
回复
因为JVM是从前向后,从左到右执行的,if (key.equals("TT") && key!=null),如果key=null, key.equals("TT") 肯定错,因为null没有equals方法。
blackfiles 2002-08-21
  • 打赏
  • 举报
回复
就是搞不掂
namowen 2002-08-21
  • 打赏
  • 举报
回复
写错了,应该是 !key.equals("")
namowen 2002-08-21
  • 打赏
  • 举报
回复
那就把key != null,改为key.equals(""),一定OK的。
blackfiles 2002-08-21
  • 打赏
  • 举报
回复
有初始化啊,让key="";
还是不行啊,问题是在生成第二个表单再提交时,抱错:
java.lang.NullPointerException
at /jsp/Myjsp/Firstjsp.jsp._jspService(/jsp/Myjsp/Firstjsp.jsp.java:35) (JSP page line 14)
at com.orionserver[Orion/1.5.3 (build 10509)].http.OrionHttpJspPage.service(.:56)
at com.evermind[Orion/1.5.3 (build 10509)]._co._skc(.:5510)
at com.evermind[Orion/1.5.3 (build 10509)].server.http.JSPServlet.service(.:31)
at com.evermind[Orion/1.5.3 (build 10509)]._bxb._crd(.:501)
at com.evermind[Orion/1.5.3 (build 10509)]._bxb._ukb(.:170)
at com.evermind[Orion/1.5.3 (build 10509)]._cn._uab(.:576)
at com.evermind[Orion/1.5.3 (build 10509)]._cn._fm(.:189)
at com.evermind[Orion/1.5.3 (build 10509)]._bs.run(.:62)

62,632

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧