null == xxx 写法的由来

声明:资料来自网上,仅供自己学习,并修改和分享,如有侵权,请告知,定会及时删除,谢谢。

经常看博客或者身边的同事说,字符串比较,常量要放前面,为了避免空指针风险,这个对于 equals 来说确实要这样写。

但是,居然还有人说,甚至也有很多人也是这么在写, == 比较,null也要放前面,这也是为了避免空指针?还是为了避免啥风险?

首先要搞清楚为什么有 null == xxx 这个写法?

这个写法的初衷是 C++ 为了避免逻辑错误的,因为 C++ 写 if(xxx = NULL) 是不会报编译错误的(变量赋值,永远为真),而写 if(NULL = xxx)是会有编译错误的。

所以在 C++ 建议把 NULL 放在前面,是为了避免程序员把 == 写成 = 引起的逻辑错误的。

而在 Java 里面,if(xxx = null) 是有编译错误提示的:

 

 

所以 Java 中不会出现 C++ 的没有编译提示而导致的逻辑问题,所以 Java 中的 xxx == null 和 null == xxx 是等价的,null 放前面也是没有任何意义的。

我们甚至还可以在 Java 中写 null == null 的判断,这也是 OK 的,完全没问题的。

下面是完整的示例:

/**
 * 运算符
 */
private static void test() {
    Integer i = null;

    // i is null
    if (null == i){
        System.out.println("i is null");
    }

    // i is null
    if (i == null){
        System.out.println("i is null");
    }
    
    // i == j
    Integer j = null;
    if (i == j){
        System.out.println("i == j");
    }

    // 编译错误
    if (i = null){
        System.out.println("i is null");
    }
}

  

posted @ 2020-08-07 14:32  素手执伞  阅读(453)  评论(0)    收藏  举报