假设一个方法
boolean test() {
    return true;
}
下面两个判断语句:if(test() == true) {}
if(true == test()) {}
这个语句的效果肯定是一样的,但我听到过一种说法,其中某一种好一些,有没有知道这个的啊?
麻烦说说啊

解决方案 »

  1.   

    if(true == test()) {}
    这个用法好点,把常数写前面是好的编程方式因为test()返回的有可能是null
    假设你的判断语句是这样的if(test().equals("aa")) {}
    如果这时候test()返回null,你的程序就会出错了
    但是如果写成if("aa".equals(test())){}
    就算test()返回null也不会出错哦
      

  2.   

    楼上的正解,一般来说没什么区别,在极端情况下可以防止空值,程序在运行时报错很难查的
    welcome every Java interested friend join our QQ Group, NO. is 167765087
      

  3.   

    突然想起一个,如果是和null值比较呢?要写成null == test() 吗
      

  4.   

    没有一点区别,test方法返回的是boolean,永远不会是null,不要扯什么空值!!!== 又不是equals这个方法调用。
      

  5.   

    这里把常量 true写在前面只能避免你把 == 写成 = 这种情况。
      

  6.   


    正解。。你方法的返回值是Boolean类型,再怎么也不会返回null的
    另外,你不觉得你这代码也有点多余吗。
     if(test()) // 这样就可以了。。{}
      

  7.   

    我觉得楼主是想弄明白 常数==变量 和 变量==常数  的区别,所以他写了简单的示例虽然这个示例并不太合适,所以我解释了楼主想要的东西,请不要再纠缠楼主写的 test() 函数的返回值了,不知道我这样的猜测,是否对呢???
      

  8.   

    所以常数写前面的做法,总结起来两点好处
    1.可以防止输入错误,即防止将a==b写成a=b
    2.防止空指针错误
      

  9.   

    一般将if(test() == true) {} 写成 if(true == test()) {}是为了避免笔误,将其写成if(test() = true) {},写成这样if(true == test()) {}是逆思维方式,刚开始这样写就觉得有点别扭,不过写多了也就见惯了,在vc6中,还可以将警告级别调到4级,如果不小心将if(test() == true) {} 写成if(test() = true) {} ,编译器将会发出警告