没有区别采用后面一种做法的人,一般都是c/c++程序员转过来做java的,在c/c++中的推荐写法是这样,防止==与=写错。

解决方案 »

  1.   

    不仅在==这种情况下,有人这样反着写,对于equals也有人喜欢反着写。例如有人就喜欢把
    if(name!=null && name.equals("lucy"))
    写成
    if("lucy".equals(name))我看了也觉得挺蛋疼。
      

  2.   

    就算是这样,我感觉,似乎也没什么必要啊,如果if(user==null)写成if(user=null),还能通得过编译吗?
    C++我不熟,但java中,那样写法,直接报错啊,所以,不存在==写成=的情况,C++中,存在吗?
      

  3.   


    equals 反着写可以避免NullPointException
      

  4.   

    你说的这种情况,倒是可以理解,为了省几个字节的空间嘛,而判断为空的那种,倒着写,确实有点怪怪的。
    但我习惯,也是用:
    if(name!=null && name.equals("lucy"))
    但一般,得到name前,我都是用三目运算,判断为null时,转为""了,就不存在name.equals("lucy")出现空指针异常了
      

  5.   

    如果没有对name做空判断,name.equals("lucy")和"lucy".equals(name)是不一样的==倒是没有什么区别
      

  6.   

    就算是这样,我感觉,似乎也没什么必要啊,如果if(user==null)写成if(user=null),还能通得过编译吗?
    C++我不熟,但java中,那样写法,直接报错啊,所以,不存在==写成=的情况,C++中,存在吗?
    在c/c++中,if(user=null) 是可以通过编译的。
      

  7.   

    你说的这种情况,倒是可以理解,为了省几个字节的空间嘛,而判断为空的那种,倒着写,确实有点怪怪的。
    但我习惯,也是用:
    if(name!=null && name.equals("lucy"))
    但一般,得到name前,我都是用三目运算,判断为null时,转为""了,就不存在name.equals("lucy")出现空指针异常了
    你可以优化代码:if("lucy".equals(name)),减少判断。
    常量放在前面是很多公司的编码规范,习惯了就好。
      

  8.   

    没有区别,但我强烈谴责null放前面的写法,对于我等强迫症患者来说,这种写法简直反人类
      

  9.   

    前后没有区别
    if(null==对象)  这个是个习惯问题,有些人习惯将null写前面,这样看代码时能很容易看到此处是个非空判断
      

  10.   

    没有区别。全凭个人爱好
    一个对象判断时,我喜欢  if(object==null)
    多个对象判断时,喜欢if(null ==object && obj==null)
      

  11.   

    Java的一些基础语法参考了C/C++语言,并且适当的做出了一些改善,目的是防止一些不必要的程序书写错误对于C/C++语言来讲,由于if(对象=NULL)也是合法的语句,编译器一般不会提示错误。除非特意调整一些警告级别,或者使用lint等静态代码解析工具才有可能会得到一些提示,为此程序员的一时的粗心大意,漏写一个等号的问题让人非常头痛所以,在C/C++世界里,书写if(NULL==对象)是非常常见以及合理的,因为如果漏写一个等号的话,if(NULL=对象)会给出编译错误;如果确实要在if语句里面做赋值操作的话,一般需要给出一些明确的注释予以说明对于Java语言来讲,针对这点已经给出明确的改善
    不仅if(null=对象)会提示错误
    if(对象=null)也会提示错误
    所以,Java程序员很幸福,怎么写都不会出问题
    而你看到的把常量摆放在前面的写法,应该是有着良好C/C++书写习惯的程序员的产物结论:
    对于Java语言来讲,推荐使用if(对象==null)这种便于阅读的书写方式,读作“如果对象为空,则”进一步讲:
    if(name!=null && name.equals("lucy"))完全等价于if("lucy".equals(name))都是正确的代码
    而if(name.equals("lucy"))在name是null的情况下会抛异常,一般会认为是危险的代码由于一些Java程序员会由于粗心或者不了解语言特性,忘记判断null,所以大多数项目组会明确要求equals必须按照常量放在前面的书写方式,以减少不必要的错误,并且代码更加简洁美观程序员应该彻底理解自己书写的代码,知道自己到底想干什么
    如果感兴趣,推荐阅读一下《代码大全》或者林锐写的《高质量C/C++编程指南》
      

  12.   

    你觉得NULL放在前面觉得他压根不算个具体对象,所以想把他放到后面,我明白,就像oracle,你不可能select  * from emp where   null  is  name;
      

  13.   

    你说的这种情况,倒是可以理解,为了省几个字节的空间嘛,而判断为空的那种,倒着写,确实有点怪怪的。
    但我习惯,也是用:
    if(name!=null && name.equals("lucy"))
    但一般,得到name前,我都是用三目运算,判断为null时,转为""了,就不存在name.equals("lucy")出现空指针异常了
    你可以优化代码:if("lucy".equals(name)),减少判断。
    常量放在前面是很多公司的编码规范,习惯了就好。+1,user == null 和 null == user确实没区别
    但是"lucy".equals(name)和name!=null && name.equals("lucy")有很大区别
    1 前者利用了equals的交换律,减少了运行的代码量,且有效避免NPE
    2 不要小看多写了一个 !=null 和 &&当你 if ("lucy".equals(name1) && "nancy".equals(name2) && ... && "tracy".equals(nameN))的时候,多一个!= null 和 &&就蛋疼了当你要把if ("lucy".equals(name1) && "nancy".equals(name2) && ... && "tracy".equals(nameN))这个条件的全部等于,改成只要一个等于,或者全部不等于的时候,就容易手忙脚乱,丢三落四了
      

  14.   

    在java里没区别。。
    防止以前c++里面if(变量=null)不报错。
      

  15.   

    后面那个是有区别的,使用"xxxxx".equals();这样不会出现nullpointException
      

  16.   

    个人觉得 null == name 比较好,一目了然,还能防错,推荐。
    不过如果足够细心的,有=、==恐惧症的,完全可以按平常 name == null 方式来写,反正习惯了,就会对那个==多看几眼,防止写成=了。写C++过来的基本上都有这种检查的习惯。