为什么Boolean总是给出null

时间:2013-04-22 13:13:14

标签: java oop syntax null boolean

我写了以下代码

Boolean isit;

if(isit== true) {
    System.out.println("isit is true");
} else {
    System.out.println("isit is not false");
}

但它始终为null,但它应该为default ..

7 个答案:

答案 0 :(得分: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"

答案 1 :(得分: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")
}

如果您的旗帜中需要三种状态(truefalse和“未设置”),则应使用Boolean;如果您只需要两种状态(truefalse),则应保留原始数据类型boolean

答案 2 :(得分:4)

您正在使用包装器类object,然后永远不会忘记将其初始化为default值。默认情况下,所有wrapper class个对象都初始化为null。

你必须像

那样初始化
  Boolean B =  Boolean.TRUE;   
  Boolean B = true; 

或采用原始值

 boolean isit;  ///default false  

答案 3 :(得分:3)

您的代码永远不会编译,它会出现The local variable isit may not have been initialized之类的错误。

Boolean是一个包装类,而不是原始数据类型。刚刚将变量初始化为

Boolean isit;

并且不分配任何永远不会编译的值 但是如果你使用基本类型的布尔值,如:

boolean isit;

然后,如果您没有分配任何内容,则默认值为false。

boolean isit;

if(isit) {
    System.out.println("isit is true");
} else {
    System.out.println("isit is false");
}

这将使isit值为false。

答案 4 :(得分:2)

<强>由于...

INPUT:

Boolean object;
boolean primitive;

System.out.println(object); 
System.out.println(primitive); 

输出:

null
false

<强>

<小时/>

  • Boolean 是一个对象。
    • 如果没有为其分配值,默认情况下其值为null

另一方面,

  • boolean 是原始类型。
    • 如果未指定某个值,则默认情况下其值为false

答案 5 :(得分:0)

Boolean是一个包装类对象。并作为java惯例object's default value is always null。如果你使用带有b小写字母的布尔值,那么它就像一个基元一样被调用,它是值,因为你默认它是值false

答案 6 :(得分:0)

在这种情况下你必须将isit-variable值初始化为true / false,否则编译器将不允许你编译代码,因为你在IF中使用isit-variable而没有给它一些值。 在java中,变量必须先被初始化才能被使用。