Java中boolean
(原始)和Boolean
(原始包装器)的默认值是什么?
答案 0 :(得分:433)
Boolean
(对象)的默认值为null
boolean
(基元)的默认值为false
。
答案 1 :(得分:376)
任何Object
的默认值,例如Boolean
,都是null
。
boolean
的默认值为false。
注意:每个基元都有一个包装类。每个包装器都使用一个默认值为null
的引用。基元具有不同的默认值:
boolean -> false
byte, char, short, int, float -> 0
float, double -> 0.0
注意(2): void
有一个包装器Void
,其默认值为null
,这是唯一可能的值(不使用黑客攻击)
答案 2 :(得分:23)
<强>布尔强>
可以是true
或false
默认值为false
。
(资料来源:Java Primitive Variables)
<强>布尔强>
可以是代表Boolean
或true
的{{1}}对象,或可以是false
。
默认值为null
。
答案 3 :(得分:17)
如果您需要询问,那么您需要明确初始化您的字段/变量,因为如果您需要查找它,那么其他人也可能需要这样做。
原始boolean
的值为false,如here所示。
正如其他人所提到的,Boolean
的值默认为null。
答案 4 :(得分:9)
Boolean是一个Object。因此,如果它是一个实例变量,它将为null。如果它在方法中声明,则必须对其进行初始化,否则将出现编译器错误。
如果声明为基元,即布尔值。如果它是实例变量(或类变量),则默认值为false。如果它在方法中声明,您仍然需要将其初始化为true或false,否则将出现编译器错误。
答案 5 :(得分:6)
未初始化的Boolean
成员(实际上是对Boolean
类型对象的引用)的默认值为null
。
未初始化的boolean
(原始)成员的默认值为false
。
答案 6 :(得分:3)
Boolean
没有默认值。必须使用Boolean
或boolean
构建String
。如果对象是未初始化的,则会指向null
。
原始boolean
的默认值为false
。
http://download.oracle.com/javase/6/docs/api/java/lang/Boolean.html
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
答案 7 :(得分:0)
class BooleanTester
{
boolean primitive;
Boolean object;
public static void main(String[] args) {
BooleanTester booleanTester = new BooleanTester();
System.out.println("primitive: " + booleanTester.getPrimitive());
System.out.println("object: " + booleanTester.getObject());
}
public boolean getPrimitive() {
return primitive;
}
public Boolean getObject() {
return object;
}
}
输出:
primitive: false
object: null
这似乎很明显,但我遇到的情况是,杰克逊在将对象序列化为JSON时,在调用getter时抛出NPE,就像这样,它返回未分配的原始布尔值。这使我相信杰克逊正在接收一个null并试图对其调用一个方法,因此调用了NPE。我错了。
故事的寓意是,当Java为原语分配内存时,即使未初始化,该内存也具有一个值,对于布尔值,Java等于false。相比之下,当为未初始化的复杂对象(如布尔值)分配内存时,它仅分配用于对该对象的引用的空间,而不分配对象本身-内存中没有要引用的对象-因此将引用解析为空。 / p>
我认为严格来说,“默认为false”有点不合理。我认为Java在显式设置之前不会分配内存并将其分配为false值。我认为Java会分配内存,并且内存碰巧具有的任何值都与“ false”的值相同。但是出于实际目的,它们是同一回事。