日期:2014-05-20  浏览次数:20836 次

请教一下判断对象是否为空是NULL写左边的原因?
请教一下判断对象是否为空是NULL写左边的原因?

  习惯这样 if(null == object){.... 请问这么做的好处到底是什么?(只谈java里这么写的原因,不考虑jsp)

------解决方案--------------------
一般常量都会写在左边,这是因为==和=比较相近,如果误写成“=”,那么常量写在左边的会报错,
而,常量写在右边的不会报错。只是编程习惯问题。
------解决方案--------------------
还是有一定道理的。一般规范是要判断==的都放左边,以人类的阅读习惯来说,更直观。并且不易犯错(怕你写成=赋值)写右边就检查不出来
------解决方案--------------------
晕。。
null写左边主要是来防止你在输入==时少打了个等号变成赋值。
null写在左边 马上就会报错。
写在右边 编译不会出错的。甚至有时运行都不出运行错误,只是在程序的逻辑上出错了,结果当然错了。
这样的错误很难查找。
所以写在左边是个好习惯。
------解决方案--------------------
探讨
一般常量都会写在左边,这是因为==和=比较相近,如果误写成“=”,那么常量写在左边的会报错,
而,常量写在右边的不会报错。只是编程习惯问题。

------解决方案--------------------
java中将==写成=就直接报错了,我就习惯写在右边

探讨

一般常量都会写在左边,这是因为==和=比较相近,如果误写成“=”,那么常量写在左边的会报错,
而,常量写在右边的不会报错。只是编程习惯问题。

------解决方案--------------------
一般写C++的喜欢这样写
------解决方案--------------------
既然强求区别,我就分析给你看看吧!

使用 javap -c Test 反编译查询 JVM 指令,结果如下:

Java code
public class Test {

    public static void main(String[] args) {
        String str = null;
        System.out.println(str != null);
    }
}

   0:   aconst_null
   1:   astore_1
   2:   getstatic       #2; //Field java/lang/System.out:Ljava/io/PrintStream;
   5:   aload_1
   6:   ifnull  13
   9:   iconst_1
   10:  goto    14
   13:  iconst_0
   14:  invokevirtual   #3; //Method java/io/PrintStream.println:(Z)V
   17:  return

------解决方案--------------------
探讨

引用:

引用:

一般常量都会写在左边,这是因为==和=比较相近,如果误写成“=”,那么常量写在左边的会报错,
而,常量写在右边的不会报错。只是编程习惯问题。

虽然这个说法是对的,但是我发现我实在是不习惯这么写,觉得很别扭,我们应该相信自己能敲对的,总靠编译器去提醒我们什么不是好习惯。

顶果子。

……