Java中Boolean类型的默认值是'true'吗?

25
为什么private Boolean shouldDropTables; 默认将变量赋值为true,而不是像写private Integer anInteger;时默认赋值为NULL呢?
我之所以问这个问题,是因为我看到一段代码中有一个评估shouldDropTables布尔变量是否为NULL的条件,来决定是否执行一个方法。

4
私有布尔类型变量shouldDropTables默认不会被赋值为真,也不是空值NULL。在这个问题中,需要展示其他代码来实现这个功能。 - Suma
这里的答案很好,但缺乏上下文和错误的假设。这个问题不适合在SO上讨论。 - EpicKip
6个回答

92

Boolean(大写'B')是一个布尔对象,如果未分配值,则默认为null。boolean(小写'b')是一个布尔原始类型,如果未分配值,则默认为false。

Boolean objectBoolean;
boolean primitiveBoolean;

System.out.println(objectBoolean); // will print 'null'
System.out.println(primitiveBoolean); // will print 'false'

12

编号。

布尔值默认情况下为null


5

默认情况下,它是NULL。因为它是一个布尔对象。

Object 'Boolean' =  NULL value          // By default,
Primitive type 'boolean' = false value  // By default.

4

我想为初学者补充一点关于原始的boolean变量的内容。

正如@99tm所回答的那样,它的默认值是"false"。这适用于实例变量或类变量。

如果你有一个方法局部变量(即局限于某个方法的变量)作为原始的boolean类型,它没有默认值,并且它不是一个Object,因此也不能为null。

在使用之前必须初始化它,否则会导致编译错误。


我以前从未了解过原始数据类型的这些内容。现在我得查一下当实例变量时,intdouble被初始化为什么值。 - Adam

3
也许您没有看到一些初始化操作。
默认情况下它为null。请参考以下示例:
$ cat B.java
class B {
        private Boolean shouldDrop;
        public static void main( String ... args ) {
                System.out.println( new B().shouldDrop );
        }
}

$ javac B.java

$ java B
null

我希望你可以理解。


2

JLS 9, 4.12.5. 变量的初始值

  • 对于布尔类型,缺省值是false。

  • 对于所有引用类型(§4.3),缺省值是null。

Boolean 是一个引用类型,因此其缺省值为 null


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接