我写了以下代码
Boolean isit;
if(isit== true) {
System.out.println("isit is true");
} else {
System.out.println("isit is not false");
}
但它总是 null ,但它应该给 false 为default
..
当您将其声明为 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"
与boolean
具有两种状态的原语不同,即true
和false
,包装器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")
}
如果您的标志中需要三种状态(true
、false
和“未设置”),您应该使用Boolean
; 如果您只需要两种状态 (true
和false
),您应该保留原始数据类型boolean
.
您正在使用包装类object
,然后永远不要忘记将其初始化为一个default
值。默认情况下,所有wrapper class
对象都初始化为 null。
你必须像这样初始化
Boolean B = Boolean.TRUE;
Boolean B = true;
或取一个原始值
boolean isit; ///default false
你的代码永远不会编译,它会给出一个错误,比如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。
因为...
输入 :
Boolean object;
boolean primitive;
System.out.println(object);
System.out.println(primitive);
输出 :
null
false
Boolean
是一个对象。
null
默认的。另一方面,
boolean
是原始类型。
false
默认为好吧,在这种情况下,您必须将 isit-variable 值初始化为 true/false,否则编译器不会让您编译代码,因为您在 IF 中使用 isit-variable 而不给它一些值。在java中,一个变量必须在使用之前被初始化。
Boolean 是一个包装类对象。并作为 java 约定object's default value is always null
。如果您使用带有 b 小写字母的布尔值,那么它被称为原语,并且它的值是您理解的false
默认值。