对于Java,两种书写方式都是不推荐的,sun编码规范里
if (condition) 
{
  statements;
}
以及
while (condition) 
{
  statements;
}
才是标准的书写方式喵~`
另外尽可能少的使用Boolean.在大多数情况下boolean基本类型就足够喵.如果一定要使用Boolean,那么请注意初始值和空值问题.
一旦Boolean型对象的值为null,三种书写方式都会抛出NullPointerException.实际上某猫工作一年多,从没碰上必须使用Boolean的情况,假如碰上了,请注意if( a!=null && a ),并且针对null做处理.Java和js以及c++不同,在js和c++里任何值都可以做条件表达式的结果,哪怕是undefined喵.
但是Java的语法严格限制:条件表达式的结果必须是true或者false,因此没必要加上==ture,==false的判断.
在推荐贴if(true==a) 和 if(a==true) 的区别???里,很多回复的朋友都没有注意遵循通常的编码规范,所以单发这一贴说明一下.
这是个人的理解,以交流为目的,不是高考标答,也许会有错误,如果有说错的地方欢迎大家指出.这里某猫选了一些有代表性的回复:1.if(true==a)是两个变量之间的比较,if(a==true)是变量a是否为真的判断!不知这样说可否..
true是关键字,不是变量,不存在"两个变量"喵.2.根据java代码的编写规则 是不允许写if(a==true)这样的代码的。 正确:if(a) or if(!a). 
编码规范都推荐的if(a)或者if(!a)的方式,无论是sun还是IBM3.以我在项目中经验,这两个区别我们在项目中推荐使用true==a,是为了防止有人漏写一个=号,做这种判断时定值放在前面少写=号会报编译错,而反过来写就不会,导致结果出错后还不容易调试出来。
猫老大要是看到某猫在公司里这么写Java代码,就离裁员不远了喵.4.效果上没区别 只是  a==true, 常会被误写成  a=true  (赋值表达式),从而导致bug,并且不容易看出来 所以一般写程序的时候,是把常量写在前面的, 即  true==a 
如果错写成true=a(赋值表达式)的话,是编译不过的 只是利用编译器,避免一些低级bug而已
写为if(a)就不会漏写=了---压根不去写它,当然不会写漏喵.如果是其他类型比较,比如a是一个int,错写为if(a=1)会因为值不为布尔类型而无法通过编译.5.一般来说 a ==b 和b==a 结果程序肯定会认为是一致的 
这个要求用户自己实现objet父类中的equals方法 
而这个方法要求用户实现时必须满足等价关系,这个属于等价关系中的 自反性 
==比较与任何方法或对象无关,它是由JVM完成的,注意不要和equals之类的方法调用混淆了.6.我也是慢慢地习惯"abc"==a 这种写法了
你在慢慢的学坏,字符串内容比较请使用equals喵~7.在写代码的时候为了避免手误,把“==”(判等)敲成“=”(赋值)引起错误,推荐采用 if(常量 == 变量) 的模式。 
但这个模式一般不用在 java 中,而是在 C++ 或 c 中。因为 java 中如果用IDE的话,会直接给出提示,没有用IDE也会在编译时报错。
非常同意喵.Java的使用者也许对c++陌生,但是js应该熟悉吧,js里使用if(true==a)或者if(true===a).这个习惯貌来自c,不过对于Java,if(a)足够了8.尚学堂在讲这个问题的时候的确讲的是对的,楼主不去听听看看,就胡下定论。记住:科学是严谨的,就算有培训的地方有错误也很是正常,如果没错误,还要我们这些程序员干嘛!
sxt没看过,但是同意"记住:"之后的话,不但是培训,百度,论坛,blog,甚至文档里都可能有错.幸可音佳娃一文刚面世,被网络上的朋友挖出了一摩尔的bug,用作者的话就是"指出了许多文章中的问题"喵~~9.if(true==a)有时候这种判断之所以把变量放后面是为了防止空指针异常,因为如果a为null的话把a放前面就会报空指针异常,而放后面不会。代码是从前往后执行的
假如a为Boolean类型并且值为null,那么就算竖着写也避免不了NullPointerException,必须写为if( a!=null && a ),所以Boolean包装类极为少见喵.10.我认为还是有区别的,就像 if(null!=a){}和if(a!=null){}
这个真没什么区别喵.如果a是基本类型,两种顺序都通不过编译,如果a是对象,两种顺序都不影响结果by the miao:其实if(a)问题在过去就被讨论过很多次,就比String c = a + b的讨论频率少那么一点,在这里建议朋友们去看<提问的智慧>一文,虽然那文章是针对邮件组的,不过对社区同样适用:提问前,确认你已经努力过了.
尽量不要提基础问题喵,文档里都有详细描述,比如这个问题以及string的问题---很多老一点的朋友都看腻了,何况答案又不是木有;
尽量不要提太笼统的问题喵,比如大家怎么看spring,怎么看struts2,spring好不好用之类---很可能得到百度或者文章里复制过来的大段描述,烂大街的描述,或者spring好用,spring就在summer前这类的无意义回复.很久没来溜达了,居然发现许多贴子内容还和一年多前某猫刚来csdn时一样,害得某猫以为自己穿越了.
向CSDN的朋友们问好,特别是好久不见的老朋友,喵~`呜喵~~呜喵~~``

解决方案 »

  1.   

    3.以我在项目中经验,这两个区别我们在项目中推荐使用true==a,是为了防止有人漏写一个=号,做这种判断时定值放在前面少写=号会报编译错,而反过来写就不会,导致结果出错后还不容易调试出来。 
    猫老大要是看到某猫在公司里这么写Java代码,就离裁员不远了喵. 感谢对我回复的评论,可能是我没说清楚,只是为了说明问题,因为当时楼主问这两者的区别,并没有说“规范问题”,严格来说,我说的是 int a = 0; if(3==a)与if(a==3)这种情况的区别,只不过在这里用在回复当时楼主说的问题上了。
      

  2.   

    if(a==3)和if(3==a)也没区别把
    就像楼主说的如果写成if(a=3)是不能通过编译的,Java只接受结果为true或者false的条件表达式.
    我认为Java里==比较没有顺序问题。
      

  3.   

    谢谢楼主分析总结我也是C/C++过来的,最喜欢这条:
    7.在写代码的时候为了避免手误,把“==”(判等)敲成“=”(赋值)引起错误,推荐采用 if(常量 == 变量) 的模式。 
    但这个模式一般不用在 java 中,而是在 C++ 或 c 中。因为 java 中如果用IDE的话,会直接给出提示,没有用IDE也会在编译时报错。 
    非常同意喵.Java的使用者也许对c++陌生,但是js应该熟悉吧,js里使用if(true==a)或者if(true===a).这个习惯貌来自c,不过对于Java,if(a)足够了 
    等培训完了也买本 幸可音佳娃 看看,去年买了靠佳娃第七版,只看了部分上卷
      

  4.   

    学习了,谢谢lz猫猫。。^_^。。ps:lz猫猫很是幽默啊,每回答案后面都要叫一声。。卡哇伊呢。。
      

  5.   

    回去翻了下代码,还好我都是
    if(a)的看来不会被老大给裁了
      

  6.   

    感谢楼主,谢谢提供。
    学习ing...
      

  7.   


    a == true 也是一个condition,所以这种写法也算符合规范只是觉得多此一举罢了
      

  8.   

    其实某猫想表达的意见就是:
    对于Java里的==比较来说,如果是boolean类型(Boolean包装类尽量不用),直接使用if(a).
    对于非boolean类型的==比较,则顺序没有影响,一般来说if(a==3)直观点,当然这看习惯,怎么写无所谓的喵.假如把if(a==3)误写做if(a=3),则无法通过编译----Java语法严格要求逻辑表达式结果必须为true或false.突然想到某猫公司里有个搭建dbus的同事,刚才看了下他的代码,bus4j的扩展java代码里全是if(true==a),if(3==b)----估计是他同时写好几种语言,使用适应更多语言编码习惯(顺道同情下那个可怜的娃娃,都快不知道自己在写什么了喵~`)貌似某猫第3条回复的评论有点失礼,抱歉抱歉喵~``
      

  9.   

    咕呜~~`...还真没注意这个问题,貌似在编码规范文档里按condition来解释...if(a==true)...也说得通喵~`不过在sun的代码里,采用的还是if(a),while(a),a?xxx:yyy的格式编码,所以还是推荐使用if(a).
    实际使用上它也更为直观,其他含常量的==比较则顺序不限,常量在前在后无所谓,某猫更多是用if(a==3).
    注意这只针对==比较.
      

  10.   

    dingdingdingdingdingdingdingdingdingdingdingdingdingding
      

  11.   

    C++ test检查代码的时候

    if (a == 3)
    这种写法啊
    if后边还得空格了
    你们代码不做检查的么?
      

  12.   

    没用过a==true这种比较,只记得字符串比较曾经用错过
      

  13.   

    没用过a==true这种比较,只记得字符串比较曾经用错过
      

  14.   

    楼主说的有些过激,
    if(condition)
    condition是个条件表达式部分
    无论 a
        a==true
        true==a
    都是条件表达式,规范上没有错误只是说写的多是a,简单点,并不能说另两种是不规范的。有时候写a==true或true==a更有利于业务的阅读。