[英]Default value of 'boolean' and 'Boolean' in Java
Java 中的boolean
(原始)和Boolean
(原始包装)的默认值是多少?
Boolean
(对象)的默认值为null
。
boolean
(原始)的默认值为false
。
任何Object
的默认值,例如Boolean
,是null
。
boolean
的默认值为 false。
注意:每个原语都有一个包装器 class。 每个包装器都使用一个默认值null
的引用。 基元有不同的默认值:
boolean -> false
byte, char, short, int, long -> 0
float, double -> 0.0
注意(2): void
有一个包装器Void
,它也有一个默认值null
并且它是唯一可能的值(不使用黑客)。
boolean
可以是true
或false
。
默认值为false
。
(来源: Java 原始变量)
Boolean
可以是代表true
或false
的Boolean
object ,也可以是null
。
默认值为null
。
如果您需要询问,那么您需要明确初始化您的字段/变量,因为如果您必须查找它,那么其他人很可能也需要这样做。
原始boolean
的值是 false ,可以在这里看到。
正如其他人所提到的,默认情况下 Boolean 的值将是Boolean
。
Boolean 是 Object。 因此,如果它是一个实例变量,它将是 null。 如果它是在方法中声明的,则必须对其进行初始化,否则会出现编译器错误。
如果您声明为原语,即 boolean。 如果它是实例变量(或 class 变量),则默认值为 false。 如果它是在方法中声明的,您仍然必须将其初始化为 true 或 false,否则会出现编译器错误。
An uninitialized Boolean
member (actually a reference to an object of type Boolean
) will have the default value of null
.
未初始化的boolean
(原始)成员将具有默认值false
。
Boolean
没有默认值。 Boolean
必须使用boolean
或String
构造。 如果 object 未初始化,它将指向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
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;
}
}
output:
primitive: false
object: null
This seems obvious but I had a situation where Jackson, while serializing an object to JSON, was throwing an NPE after calling a getter, just like this one, that returns a primitive boolean which was not assigned. 这让我相信 Jackson 正在接收 null 并试图调用它的方法,因此是 NPE。 我错了。
Moral of the story is that when Java allocates memory for a primitive, that memory has a value even if not initialized, which Java equates to false for a boolean. By contrast, when allocating memory for an uninitialized complex object like a Boolean, it allocates only space for a reference to that object, not the object itself - there is no object in memory to refer to - so resolving that reference results in null.
我认为严格来说,“默认为假”有点离题。 我认为 Java 不会分配 memory 并为其分配 false 值,直到它被明确设置; 我认为 Java 分配 memory 以及 memory 碰巧具有的值与“false”的值相同。 但出于实际目的,它们是相同的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.