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
,因此它也不能为空。
使用前必须先初始化,否则编译错误。
【讨论】:
我从来不知道原语。现在我要查一下int
和 double
在实例变量时被初始化为什么。【参考方案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 的布尔默认值是“真”吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章