黑马程序员技术交流社区

标题: if(true == b) 与if(b == true) 一样吗? 求解! [打印本页]

作者: 新手啊,多照顾    时间: 2013-8-4 21:36
标题: if(true == b) 与if(b == true) 一样吗? 求解!
本帖最后由 杨兴庭 于 2013-8-5 18:40 编辑

if(true == b) 与if(b == true)有什么区别
我是一个Java的初学者, 完全靠自己自学,今天在看视频是听老师说专业的程序员都用 if(true == b)

作者: 白堇翎    时间: 2013-8-4 21:47
本帖最后由 白堇翎 于 2013-8-4 21:48 编辑

如果b是布尔型变量 这个地方无论你写if(true==b)还是if(b==true)都会显的你很不专业
专业人士写的是if(b)

因为什么呢?因为if()这个括号里需要的就是ture和false而b这个变量或者对象指向的值本身就是ture或者false, 你再在这里判断一次他和ture,false是否相等就显得太业余了

作者: 李江    时间: 2013-8-4 21:47
直接用if(b)更好
作者: 逆袭的风    时间: 2013-8-4 22:10
对于if(true == b) 与if(b == true),,,,直接用if(b)就行.但是就你的问题而言,
真要分哪个更好就是if(true == b) 了
因为就两个语句而言,当你不小心写错时,把判断写成赋值了
if(true=b)就会编译报错,
而if(b=true)则为真继续执行
作者: 黑马李昂    时间: 2013-8-4 22:46
  1. public class IfDemo {

  2. public static void main(String[] args) {
  3. boolean b = true ;
  4. if(true==b){//是两个变量之间的比较
  5. System.out.println(a);
  6. }

  7. if(b==true){//是变量b是否为真的判断
  8. System.out.println(a);
  9. }
  10. }
  11. }
复制代码
       效果上没区别 只是  b==true, 常会被误写成 b=true  (赋值表达式),从而导致java虚拟机报错, 所以一般写程序的时候,是把常量写在前面的, 即  true==b。

       还有if(true==a)有时候这种判断之所以把变量放后面是为了防止空指针异常,因为如果a为null的话把a放前面就会报空指针异常,而放后面不会。
       网上某些大神说:代码是从前往后执行的,假如b为Boolean类型并且值为null,那么就算竖着写也避免不了NullPointerException,必须写为if(b!=null && a ),所以Boolean包装类极为少见。

       注意:根据java代码的编写规则 是不允许写ifb==true)这样的代码的。 正确的写法是:if(a) or if(!a).

      希望与楼主共同学习{:soso_e100:}

作者: 米中之玉    时间: 2013-8-5 02:42
我就说下“=”和“==”的区别吧。
1、“=”也叫赋值语句,就是把等号右面的值赋给等号左边的变量,
值得注意的是赋值运算符的运算顺序是“从右到左”。
2、“==”判断运算符,我叫它为“连等运算符”,是一个逻辑运算符,返回结果不为真就为假。
判断时看比较的双方是不是同一个事物就行了。注意,必须是同一个事物才为真,否则为假。

现在再说你的问题,根据上面第二条,事物都确定了,先后顺序对结果没有影响。
作者: 杨玲    时间: 2013-8-5 09:17
呵呵,老师指的是非boolean类型的,boolean类型的可以直接if了嘛,哪还用==true啊什么的。
之所以说if(i==5)这样的方式不如if(5==i)是因为我们是人嘛,我们都可能会犯错,这错误就是把==写成=,如果是这样的话那么前一种直接成了if(i=5)这是在为i 赋值了,编译时它都不会报错,而如果是后一种就成了if(5=i)虽然也是赋值,但是把变量赋值给常量是要报错的,这样你一看报错就知道少写了个=,这就是说if(5==i)比if(i==5)好的原因!
作者: 心灵之歌    时间: 2013-8-5 10:20
像上面楼主所说,这样定义确实可以显得你很不专业。不过如果真要说他们俩者之间的区别的话。if(true==b)比if(b==true)稍微好点。后面b如果为null的话就不存在真假了!
作者: masterV    时间: 2013-8-5 11:30
黑马李昂 发表于 2013-8-4 22:46
效果上没区别 只是  b==true, 常会被误写成 b=true  (赋值表达式),从而导致java虚拟机报错, 所 ...

学习了,与君共勉
作者: EYE_SEE_YOU    时间: 2013-8-5 13:24
本帖最后由 EYE_SEE_YOU 于 2013-8-5 13:26 编辑

毕老师说的专业程序员用if(true==b)意思是指,在if()里面,
如果把常量放在前面,
那么编译的时候就容易查错






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2