Java中布尔值和布尔值的默认值

时间:2011-06-03 11:05:43

标签: java boolean default-value

Java中boolean(原始)和Boolean(原始包装器)的默认值是什么?

8 个答案:

答案 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)

<强>布尔
可以是truefalse 默认值为false

(资料来源:Java Primitive Variables

<强>布尔
可以是代表Booleantrue的{​​{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没有默认值。必须使用Booleanboolean构建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”的值相同。但是出于实际目的,它们是同一回事。