3

我写了以下代码

Boolean isit;

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

但它总是 null ,但它应该给 false 为default..

4

7 回答 7

20

当您将其声明为 a 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"
于 2013-04-22T13:13:50.217 回答
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.

于 2013-04-22T13:18:27.323 回答
4

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

你必须像这样初始化

  Boolean B =  Boolean.TRUE;   
  Boolean B = true; 

或取一个原始值

 boolean isit;  ///default false  
于 2013-04-22T13:14:05.670 回答
3

你的代码永远不会编译,它会给出一个错误,比如The local variable isit may not have been initialized.

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

Boolean isit;

并且不分配任何它永远不会编译的值。
但是,如果您使用原始类型布尔值,例如:

boolean isit;

那么如果你什么都没分配,那么默认情况下该值将是假的。

boolean isit;

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

这将使 isit 值为 false。

于 2013-04-22T13:17:50.363 回答
2

因为...

输入 :

Boolean object;
boolean primitive;

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

输出 :

null
false


  • Boolean是一个对象。
    • 如果它没有被赋值,它的值将是null默认的。

另一方面,

  • boolean是原始类型。
    • 如果它没有分配一些值,它的值将false默认为
于 2013-04-22T13:18:12.887 回答
0

好吧,在这种情况下,您必须将 isit-variable 值初始化为 true/false,否则编译器不会让您编译代码,因为您在 IF 中使用 isit-variable 而不给它一些值。在java中,一个变量必须在使用之前被初始化。

于 2013-04-22T13:33:56.510 回答
0

Boolean 是一个包装类对象。并作为 java 约定object's default value is always null。如果您使用带有 b 小写字母的布尔值,那么它被称为原语,并且它的值是您理解的false默认值。

于 2013-04-22T13:26:05.637 回答