为什么Boolean总是给出null

3 java oop syntax null boolean

我写了以下代码

Boolean isit;

if(isit== true) {
    System.out.println("isit is true");
} else {
    System.out.println("isit is not false");
}
Run Code Online (Sandbox Code Playgroud)

但它总是为空,但它应该给出错误的default...

Doo*_*nob 20

当您将其声明为Boolean(注意大写字母)时,它是一个对象,因此null默认情况下.

我认为你的意思是成为一个boolean,而不是一个Boolean.

此外,boolean您可以这样做:

boolean isit;
if (isit) {
    System.out.println("isit is true");
} else {
    System.out.println("isit is false");
}
//prints "isit is false"
Run Code Online (Sandbox Code Playgroud)


das*_*ght 10

boolean具有两种状态的原语不同,即truefalse,包装器Boolean具有另外的第三状态null.当Boolean对象是null,它既不是true也不是false.

当您将对象与等式进行比较时true,该值将被包装为Boolean,并与之进行比较null.结果是false.false但是,如果将它与之比较,则会发生同样的情况:下面的代码不会打印任何内容.

Boolean isit = null;
if (isit == true) { // true gets converted to Boolean.TRUE
    System.out.println("isit is true")
}
if (isit == false) { // false gets converted to Boolean.FALSE
    System.out.println("isit is false")
}
Run Code Online (Sandbox Code Playgroud)

如果你在你的旗帜(需要三种状态true,false和"未设置"),你应该使用Boolean; 如果您只需要两个状态(truefalse),则应保留原始数据类型boolean.