Java 的布尔默认值是“真”吗? [复制]

Posted

技术标签:

【中文标题】Java 的布尔默认值是“真”吗? [复制]【英文标题】:Is Java's default value for Boolean 'true'? [duplicate] 【发布时间】:2011-08-28 05:53:24 【问题描述】:

为什么private Boolean shouldDropTables;默认分配true给变量而不是NULL,就像写private Integer anInteger;时一样?

我之所以问,是因为我遇到了一些代码,其中对 shouldDropTables 布尔变量为 NULL 的评估或不确定是否执行方法。

【问题讨论】:

"为什么 private Boolean shouldDropTables; 默认情况下将 true 分配给变量而不是 NULL" 它没有。为此需要一些其他代码,此问题未显示。 这里的答案很好,但没有上下文和错误的假设。这个问题不是 SO 的主题 【参考方案1】:

我只是想补充一点(针对初学者)关于原始 boolean 变量。

正如@99tm 回答的那样,默认值为“false”。这对于实例或类变量是正确的。

如果您有一个方法局部变量(即方法的局部变量)作为原始boolean,则没有默认值,它不是Object,因此它也不能为空。

使用前必须先初始化,否则编译错误。

【讨论】:

我从来不知道原语。现在我要查一下 intdouble 在实例变量时被初始化为什么。【参考方案2】:

Boolean(带有大写“B”)是一个布尔对象,如果没有赋值,则默认为空。 boolean(带有小写“b”)是一个布尔原语,如果没有赋值,则默认为 false。

Boolean objectBoolean;
boolean primitiveBoolean;

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

【讨论】:

【参考方案3】:

没有。

布尔值默认为null

【讨论】:

【参考方案4】:

默认为 NULL。因为它是一个布尔对象。

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

【讨论】:

【参考方案5】:

JLS 9, 4.12.5. Initial Values of Variables

对于布尔类型,默认值为false。

对于所有引用类型(第 4.3 节),默认值为 null。

Boolean 是引用类型,因此默认值为null

【讨论】:

【参考方案6】:

也许您没有看到一些初始化。

默认为空。请参阅此示例:

$ 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

希望对你有帮助

【讨论】:

以上是关于Java 的布尔默认值是“真”吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中布尔类型的运用,flag的问题

如何检查布尔值是真还是假?

Java包装类,以及Integer与int之间的比较

JDK 8 中的默认值是 Java 中多重继承的一种形式吗?

Java布尔“意外的返回值”

jQuery 的 ajax 默认超时值是多少? [复制]