问个大家简单的问题:
  boolean bConn=false;
 ……………………
  if(bConn==false)
           ……
和if(false == bConn)
           ……
  有神马区别啊 

解决方案 »

  1.   

    没区别
    直接if(bConn)也可以
      

  2.   

    推荐使用:if(!bConn)
    你说的那两种应该没有区别
      

  3.   

    没有区别,布尔类型变量赋值为false,布尔类型变量再跟false做比较
      

  4.   

    推荐用后者,
    if(bconn==false)易出現粗心寫成 if(bconn=false)而不報錯
    但是
    if(false==bconn)錯寫成if(false=bconn)會報錯
      

  5.   

    说没区别的人肯定没有真正测试过,这是存在很大区别的。主要是在性能方面我这有个现成的代码 两种的写法在性能上存在很大差异
    if(null == str || "".equals(str)) return ""; //性能好,效率高,运行速度快
    if(str == null || str.equals("")) return ""; //效率低,运行速度慢上面的写法我保证测试过。由于水平有限,上面两种写法暂只发现在性能方面存在很大区别。多多指教
      

  6.   

    至于楼猪的boolean的没有测试过
      

  7.   

    最简单的方法就是走DEBUG就能走出来,在执行这两句的时候的速度上有明显差异
      

  8.   

    楼主,真正的程序员是不会纠结在这种问题上的,你应该向更高层次看齐,除非你现在已经到了返朴归真的地步想去sun做首席架构了,那这个问题就上升到相当高的地步了估计csdn上也没人能答得出来
      

  9.   

    我记得在风中叶老师的sturts2视频中有提到这个问题,他给的建议和7L是一致的。
      

  10.   

    木有区别,如果用到了null
    一般就if(null!=str),将null写在前,如果是true,false,一般用if(!str)
      

  11.   


    涉及NULL的比较确实区别,因为NULL和任何引用都不相等,包括NULL和NULL比较,但这算是特例吧,不具有一般性,再有,我不觉得""(空串)的比较也会因为写法的不同在效率上有区别,不知道你有没有单独测试一下空串的情况,另外,逻辑与或操作用带短路的运算符 | ,&效率会高点。
      

  12.   

    if(bconn==false)容易if(bconn=false),此时不报错。if(false==bconn)写成if(false=bconn)会报错。其实直接写if(!bconn)不就行了。 
     
      

  13.   

    效率不同的原因是运算符 == 所产生的运算发生的对象是不同的,例如: 
    boolean temp;
    if(null == temp)这是肯定调用的是null对象的方法,反之是调用的temp对象的方法,至于基本数据类型,这两种写法应该都无所谓的。例如String 或者 其他包装类 自定义类, 我没有做过测试
      

  14.   

     boolean bConn=false;
     ……………………
      if(bConn==false)
    LZ这个问题问的比较细致和经典,如果要从最后的效果来看的话,结果都是一个:条件符合进入if内部执行内部的方法,但是他们之间的区别得追踪到,他们执行的流程上,
    先定义:boolean bConn=false;
     看"=="作用
    1.数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。
    2.果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等.
    3.表示对象、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。 
    4.针对所有的原始数据类型执行自动数据转换。 
    5.在对 null 和 undefined 进行比较时,全等运算符返回 false。
    6.在涉及到原始值(例如,var x:Number = 1)和原始对象(例如,var x:Number = new Number(1))这两种情况下,全等运算符在 ActionScript 3.0 中生成的结果与在 ActionScript 2.0 中生成的结果不同。这是由于 ActionScript 3.0 不再区分原始值和原始包装对象。 
    总结出:结果是一样,但是有个先后顺序,是拿右边的原始值和左边的值进行比较,按java常规==写法都是把固定的写左边,会变动的写右边,和equals恰恰相反,这样也就多多少少的影响到了部分运行性能问题。
    个人愚见,只供参考。
      

  15.   

    昨天关于逻辑运算符那块说错了,&& ,||才是带短路的,我有罪~~orz
      

  16.   

    人家说的是boolean型, 不是String
      

  17.   


    另外你想获得最好的运行效率的话建议用这种方式判断空字符串
    if(str == null || str.length() == 0) return ""; 
      

  18.   

    其实你还有种情况你没有说就是true ==bconn 与false==bconn 效率也是不同的!
    测试的方法就是做一些耗时的操作来抹掉一些时间!
    具体可以看一下我刚刚写的bolg
     http://blog.csdn.net/pdw_jsp/article/details/6700449
      

  19.   


    不知道你所谓的很大差异是多大? String str = null ;
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
    System.out.println(sdf.format(System.currentTimeMillis()));
    if(null == str || "".equals(str)) {}
    System.out.println(sdf.format(System.currentTimeMillis()));
    if(str == null || str.equals("")){}
    System.out.println(sdf.format(System.currentTimeMillis()));我运行的结果是:
    15:00:56.531
    15:00:56.531
    15:00:56.531
      

  20.   

    不建议把变量放在判断语句的前面,如:
       if(bConn==false){}
    你这个变量是布尔类型,所以看不出差别来,如果在是String类型,那么在传递过程中,没有取到bConn的值,会报空指针异常。
      

  21.   

    具体的区别也说不上来,只知道if(false == bConn)的效率比较高,好像资深程序员都推荐用这种方法,具体应该是jvm里面的东西了吧
      

  22.   

    没有太大的区别,但是if(false == bConn)这种方法比较推荐,因为如果由于输入的时候由于疏忽而写成了if(false = bConn) 的时候会报错,而if(bConn = false) 则不会,不便于检查。
      

  23.   

    if(bConn==false)和if(false == bConn)与if(!bConn)的最大区别是:
    在实际项目中if(bConn==false)和if(false == bConn)估计都会被领导骂,
    而if(!bConn)则不会。
      

  24.   

    博文怎么进制评论了??你那个demo里面,对布尔的判断就只有一次,然后就直接循环了。。怎么能说明问题??
      

  25.   

    null和任何引用都不相等吗? 你确定?
      

  26.   

    对于JDK自己封装好的方法,性能再低也不会低到哪去。主要还是关注代码的健壮性。通常两个对象比较时都是把常量放左边,变量放右边。这样可以防止空值针异常发生。
    譬如if(var == null) 如果var只声明了对象类型,而没有new,这种情况就很容易报空值针错误。
    应写成if(null == var)