我只是想知道Java之间是否存在差异:
private boolean someValue;
private boolean someValue = false;
第二行可能只是浪费时间?
编辑(摘要):
从答案中我发现几乎没有区别,但是:
“但是,依赖于此类默认值通常被视为糟糕的编程风格。”
但有一些强烈的论据不这样做 - 请参阅下面接受的答案。
编辑2
我发现在某些情况下,boolean
值必须初始化,否则代码将无法编译:
boolean someValue;
if (someValue) { // Error here
// Do something
}
在我的NetBeans IDE中,我收到错误 - “变量someValue可能尚未初始化”。
它变得有趣.. :)
答案 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 。
如果在方法中声明它,则必须对其进行初始化,否则会出现编译错误。