如题

解决方案 »

  1.   

    一个是判断是否为空,一个是判断对象是否为null
      

  2.   

    效率的问题
    null != user; 比 user != null; 运行效率要高!!!
      

  3.   


    我持怀疑态度看看编译以后的class文件吧可能被编译出来都是一样的good luck
      

  4.   

    反对。
    最主要还是编程习惯,在这个例子null != user; 比 user != null;中没有太大区别,
    有一个明显的例子:
    0 String obj=null;
    1 if(str.equals("isReady"))
    2 {
    3     go();
    4 }
    在这个例子中,第一行就会抛一个空指针异常,因为str为null,所以无法调用str的equals方法。应该改为:"isReady".equals(str)
      

  5.   

    前者C/C++搞多了的习惯用,因为C里面if(user=null)写代码时不报错。
    后者java的习惯用,if(user=nll)直接报错了。。
      

  6.   

    综上所述,除了“前者看起来恶心”以外,两者没有任何区别;“C里面if(user=null)写代码时不报错”,所以C/C++程序员用if(null==user),防止编码时漏写一个“=”号,从而导致难以调试的错误;而在Java中if(user=null)根本不能编译,所以,在Java中,写成if(null==user)已经没有什么意义了。
      

  7.   

    C语言中其实也没有必要这么写了,if(user=NULL)编译器会警告。
      

  8.   

    这个如果一般来说是没什么区别的。但是如果User是一个字符串“null”时。就有了天大的区别。。呵呵。楼主应该明白了吧。呵呵!
      

  9.   

    不明白你说的“天大的区别”是什么。如论如何,字符串"null"和null都是不会相等的。
      

  10.   

    无论如何,两者都不会出现“空指针异常”的。空指针异常是出现在使用equals()来比较的情况下。
      

  11.   

    对于如题中的两种写法没有本质的区别!在Java中习惯上是将null 放在前面。
      

  12.   

    语言习惯问题,后面的写法大部分是java的人干的,能顺眼点而已。
      

  13.   

    按照表达习惯User!=null比较顺
    null!=User也就防止==写成=同样的习惯还有4==i
      

  14.   

    基本上没有区别, 这只是为了避免一个经典错误:==和=的问题。
    从C语言开始, =用于赋值, ==用于看是否相等。问题在于很多时候把==错拼成=,导致了很多问题。
    所以当把变量和常量比较时, 就把常量放在前面1 == 2, null == obj, 这样如果错把==拼成=, 编译器就会发现问题, 因为不能给常量赋值。
    不过现在没有太多的必要了, 因为如果在条件处有赋值, 编译器都会给出警告, 比如:
       if ( a = 2 )
    编译器会给出警告的。
    个人不喜欢把常量放在前面, 真的很恶心!
      

  15.   


    if(sql != null && !sql.equals(""))这样 写 会导致 控制指针 异常
      

  16.   

    完全赞同
    if(null==user)看起来确实“恶心”
      

  17.   

    如果user为null,第2个会报空指针而第1个不会
      

  18.   

    一样的主要是有些人为了避免输入错误而这样写的。如null!=user,而错误写成了null=user,仅次而已
      

  19.   

    首先是效率的问题 
    null != user; 比 user != null; 运行效率要高!!!其次 是:
     如果 user是一个对象引用的话,null!=user ;在语法上不会报空指针异常!
    而后者 在使用时 会报空指针异常 ,
      

  20.   

    这个主要是一个编写代码习惯的问题。如果你想表达一下user != null但是!在你打的时候忘写了,这样就变成了user = null(把user赋值为空),编译器在编译的时候也不会报错,这种错误危险性也很大,但是如果你写成null != user的时候如果忘写!,就变成null = user这个时候编译器就会报错。有助于你检查错误!!!
      

  21.   

    java里面写成 user != null就可以了, 写成 null != user很恶心
      

  22.   

    怎么可能 ,如果sql为空 就不会去执行后面的&&!sql.equals("")语句了  压根不会还有user != null  也不会有空指针异常的  null == null 这样写是没有问题的
      

  23.   

    都不会报空指针异常.
      equals 才会报 在此时推荐用"".equals(User);
      = 是比较对象是否相等
     null!=User 和 User!=null User是可以为null的 一般我都是用User!=null 
    纯属个人意见
      

  24.   

    个人觉得是习惯的问题
    在C/C++中使用if(user=null)时编译器不会报错而已
      

  25.   

    我现在习惯if(!(User==null)){do something....}else{do something....}
      

  26.   

    效率问题在上一年我们已经讨论过了
    http://topic.csdn.net/u/20090909/21/da72456c-3d86-4a56-aeaf-bfcac8534846.html
      我说一句:如果你认为会报错,那只能说明你的编程习惯问题,而不是这种写法的问题
             两种都可看个人喜欢~~
      

  27.   


      public static void main(String[] args) {
        String str=null;
        if(str!=null){
         System.out.println("实践是检验真理的唯一标准,我是!=null方法");
        }else {
    System.out.println("我怎么不报空指针呀?楼上人们,我是!=null方法");
    }
        if(null!=str){
         System.out.println("实践是检验真理的唯一标准,我是null!=方法");
        }else {
    System.out.println("我怎么不报空指针呀?楼上人们,我是null!=方法");
    }
    }
      
    }
      打印结果
      我怎么不报空指针呀?楼上人们,我是!=null方法
      我怎么不报空指针呀?楼上人们,我是null!=方法
     总结:方法一样。看个人习惯。。
      

  28.   

    怎么不可能呀。。如果sql为空,sql再调用equals时就抛出空指针。怎么不会执行后面的了。晕!扯谈!
      

  29.   

    呵呵。。各有各的意见!
    不过偶还是觉得null != User安全点。
    因为在你不再依赖IDE的时候,你就会发现null!=User的好处。再次这对你的编程习惯也好。
    还有就是为了防止a抛出空指针的问题。
    如:
    String str = null;
    ...
    if(str.equals("hello")){//在这里有可能抛出空指针的问题。
         //code
    }
    再改成"hello".equals(str)其实是可以有效地防止空指针的发生。
      

  30.   

    楼上的,知道什么叫&&运算符的短路吗?不知道的话请google。null != user除了看着恶心以外,没有任何意义。
      

  31.   


    貌似这个跟.equals方法没关系。
      

  32.   

    晕,我就是写成null != user
      

  33.   

    同意#58楼说法。
    另一种情况如:你想判断User是否为null时,可以这么写:null==User。
    假如此时你小心写成:null=User。这时如果你编译就会报错的。错误检查提前到编译阶段。
    但是假如你写成这样:User=null。是不会报错,而且因为这种写法导致的错误很难查到的。Java&Oracle学习交流群,知无不言,言无不尽。欢迎大家交流分享学习工作心得。QQ群:20378027。
      

  34.   


    我还晕你呢 ,你自己还是好好看看&&怎么用的吧,如果第一个为空,那么sql!=null 就为false,就不会去执行后面的&&!sql.equals("")这个方法了   晕....
      

  35.   

    这样用,我到还没碰到过,不过楼主,我到遇到过这种问题,有点和你问的相似.."User".equals(user);
    user.equals("User");如果我们按照第一种写法写,可以避免 空指针
      

  36.   

    效率上应该没什么区别,例如public static void main(String[] args) {
    Object aObject=new Object();
    System.out.println(null==aObject);
    System.out.println(aObject==null);
    }
    ublic static void main(java.lang.String[] args);
         0  new java.lang.Object [3]
         3  dup
         4  invokespecial java.lang.Object() [8]
         7  astore_1 [aObject]
         8  getstatic java.lang.System.out : java.io.PrintStream [16]
        11  aload_1 [aObject]
        12  ifnonnull 19
        15  iconst_1
        16  goto 20
        19  iconst_0
        20  invokevirtual java.io.PrintStream.println(boolean) : void [22]
        23  getstatic java.lang.System.out : java.io.PrintStream [16]
        26  aload_1 [aObject]
        27  ifnonnull 34
        30  iconst_1
        31  goto 35
        34  iconst_0
        35  invokevirtual java.io.PrintStream.println(boolean) : void [22]
        38  return应该没什么区别的只是为了防止出错
    null=User会报错
    User=null不会报错
      

  37.   

    很恶心的东西,讨论这些还不与去想想一个100次的循环和10000次的循环哪个在外面效率高!
    我来CSDN也有几个月了,就没看见有人贴这样的帖子,反倒是在比较什么++k与k++的一类的效率,有意义吗?
      

  38.   

    这里一半以上的人受C++影响,想当然的随口就乱答null != user 除了看起来让人不舒服外,没什么区别