Java中的默认布尔值

时间:2014-02-02 09:49:39

标签: java boolean

我只是想知道Java之间是否存在差异:

private boolean someValue;

private boolean someValue = false;

第二行可能只是浪费时间?

编辑(摘要):

从答案中我发现几乎没有区别,但是:

  

“但是,依赖于此类默认值通常被视为糟糕的编程风格。”

但有一些强烈的论据不这样做 - 请参阅下面接受的答案。

编辑2

我发现在某些情况下,boolean必须初始化,否则代码将无法编译

boolean someValue;
if (someValue) { // Error here
     // Do something
}

在我的NetBeans IDE中,我收到错误 - “变量some​​Value可能尚未初始化”

它变得有趣.. :)

5 个答案:

答案 0 :(得分:20)

Java中的所有实例和类变量都使用default value初始化:

  

对于类型boolean,默认值为false

因此,您的两个陈述在单线程应用程序 中功能相同

但请注意,boolean b = false;将导致两次写入操作:b将首先分配其默认值false,然后将为其分配其初始值(恰好是{{} 1}}以及)。这可能在多线程上下文中具有重要性。请参阅this example,明确设置默认值如何引入数据竞争。

  

然而,依赖于这样的默认值通常被认为是糟糕的编程风格。

我认为相反:明确设置默认值是不好的做法:

  • 引入了不必要的混乱
  • 它可能会引入细微的并发问题

答案 1 :(得分:3)

如果您没有初始化它,它将是false。所以他们之间没有区别。

答案 2 :(得分:2)

boolean数据类型的默认值为false,因此我们可以说没有差异。

答案 3 :(得分:1)

没有区别,来自:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

  

声明字段时并不总是需要指定值。   声明但未初始化的字段将设置为a   编译器合理默认。一般来说,这是默认的   将为零或null,具体取决于数据类型。依靠这样的   但是,默认值通常被认为是错误的编程   风格。

答案 4 :(得分:0)

如果您声明为基元boolean。如果它是实例变量(或类变量),则默认值为 false

如果它是实例变量Boolean,则它将 null

如果在方法中声明它,则必须对其进行初始化,否则会出现编译错误。