为什么抽象变量null不等于null

时间:2016-02-17 20:59:06

标签: java null

我已经制作了很多代码,但我从来没有这么做过。我在JRE 1.8.0_66上运行。 我写了一个名为Grenade的抽象类。比我在班级Profile中做出这些陈述:

public class Profile {
    Grenade varGrenade; // Field
    public void check() {
        varGrenade = null; // set reference to null
        System.out.println("Am i null: " + this.varGrenade == null);
    }
}

此语句返回

  

我是null:false

如果我想打印varGreanade的结果,则会打印null。我哪里出错了? (不知道它是否有抽象手榴弹类的东西)如何在不抛出null的情况下检查NullPointerException

2 个答案:

答案 0 :(得分:1)

"Am i null: " + this.varGrenade不为空。

您需要括号来强制它连接到空检查。

(就像1 + 2 == 3并不代表1 + (2 == 3)

答案 1 :(得分:1)

这只是一个括号问题。你想要的是

System.out.println("Am i null: " + (this.varGrenade == null)); 

你得到的是

System.out.println(("Am i null: " + this.varGrenade) == null);