我曾经面试的一道题

lizhaowei 2008-01-04 11:24:08
if(obj != null)
...

if(null != obj)
...

谁可以帮我解释一下,判断对象是不是null时,关键字 null 写在 != 前面有什么好处?
这是我曾经面试时没有答出来的一道问题,我找了好久也没有找到答案。
...全文
267 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangkingthod 2008-01-07
  • 打赏
  • 举报
回复
孙鑫的书上有。
lizhaowei 2008-01-07
  • 打赏
  • 举报
回复
谢谢大家的帮助,我个人同意 liuhua0420 的解释,在java中判断条件 if(obj = null) ... 程序编译不通过,因为表达式 obj = null 的结果不是true或false,所以我同意 liuhua0420 的解释。再次感谢大家的帮助!!!
shijiang 2008-01-06
  • 打赏
  • 举报
回复
学习了~
  • 打赏
  • 举报
回复
这样跟判断空指针异常好像关系不大吧,就算obj为null也不会抛出异常的。

不是很明白这种反过来写的意义何在?也许就是习惯问题吧。
qiudawei115 2008-01-06
  • 打赏
  • 举报
回复
应该是防止空指针异常吧
sunyujia 2008-01-06
  • 打赏
  • 举报
回复
不小心少写个=就出bug了
java里面只有boolean可能出现这种情况,其他类型编译时会检查
boolean a=false;
if(a=true){

}
xiaolingshi 2008-01-06
  • 打赏
  • 举报
回复
认同三楼的
太空眼睛 2008-01-06
  • 打赏
  • 举报
回复
3楼说的对, 在C中有一个很良好的编程风格, 就是在条件判断语句中, 有经验的程序员都会把常量写在左边, 比如
if(1==a), 因为在很多时候两个等号(==)会写成一个等号(=), 如果是if(a=1),那么这个条件永远都为真, 里面
的语句总会被执行, 当写出来的程序很长时, 当编译运行, 发现结果不对的时候, 回头再来找错误是很难发现这个
隐蔽的错误的, 但如果一开始编程的习惯是把常量写在左边,即if(1=a),即使是粗心少写一个等号, 当调试的时候,编译都不会通过的
qq12411069 2008-01-05
  • 打赏
  • 举报
回复
学习..
f_mei520 2008-01-05
  • 打赏
  • 举报
回复
學習
liuhua0420 2008-01-05
  • 打赏
  • 举报
回复
听说是:前面null 编择时把它当成常量来看。系统处理速度快一点。
dgqbcht 2008-01-04
  • 打赏
  • 举报
回复
这个习惯是这样来的。最早学C编程的时候,像if(a=b)这样的条件是编译通过的,尽管你的意思是if(a==b)。
为了避免出现这种低级错误,写判断的时候习惯把常量写在前边,因为即使出现了if(null=a)这样的错误,也会被编译器提示错误,因为你不能给常量再赋值。
mcluvin 2008-01-04
  • 打赏
  • 举报
回复
只知道equals方法判断的时候把常量放在前面可以防止空指针异常,用"!="真想不出到底有嘛好处。

if("".equals(obj))
YeLang2007 2008-01-04
  • 打赏
  • 举报
回复

我也不清楚,帮你顶一下了...

62,615

社区成员

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

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