我写了以下代码
Boolean isit;
if(isit== true) {
System.out.println("isit is true");
} else {
System.out.println("isit is not false");
}
但它始终为null,但它应该为default
..
答案 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
原语不同,即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
。
答案 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中,变量必须先被初始化才能被使用。