美文网首页
Java 中判 null 书写 obj == null 还是nu

Java 中判 null 书写 obj == null 还是nu

作者: Artfox丶艺狸 | 来源:发表于2021-01-23 21:06 被阅读0次

做为一个只会使用Java语言的程序员来说,在看到有人写判 null 的时候有如下代码

    public boolean isNull(Object obj) {
        return null == obj;
    }

那么是不是感觉和我们看到的一般判断 null 的代码有点不一样呢?
是的,这里写的是 null == obj ; 那么为什么会有这样的写法呢,在我查阅了许多资料后发现,这其实主要是防误写的,就是把 == 写成了 = ,主要是像C语言中,以下代码是可以编译过的:


if(obj = null){
    // do something 
}

而上面的代码会造成空指针,但是我们知道,在java中这样写一般是编译不过的。没错,一般是编译不过的,还是有一种情况下可以编译的过的!

那么在什么情况下是可以编译的过呢?

思考:

  1. java 条件判断中需要的是什么类型呢?
    是布尔值
  2. 什么样的布尔值可以赋值 null 呢?
    对,就是boolean 的包装类 Boolean

那么就可以写出如下的代码

    public void testNull(Boolean bool){
        if (bool = null){
            // do something
        }else {
            
        }
    }

这样的代码是可以通过编译的,但是在运行的时候会报 NullPointerException

但是也只有这种情况会出现误操作,并且现在的编辑器也会有提示的,如idea,就会有提示

空指针代码提示

这种场景也是比较低的。

所以作为一个Java程序员来说,我个人认为你习惯哪种写法都是没有问题的,借助IDE的静态代码检查能力也能帮我规避很多问题。

主要是记录在Java中其实是可以写出 if (bool = null)可编译通过的代码。

相关文章

网友评论

      本文标题:Java 中判 null 书写 obj == null 还是nu

      本文链接:https://www.haomeiwen.com/subject/dbnuzktx.html