【发布时间】:2014-02-25 20:44:33
【问题描述】:
我只是想知道Java中是否有区别:
private boolean someValue;
private boolean someValue = false;
第二行可能只是浪费时间?
编辑(摘要):
从答案我发现几乎没有区别,但是:
“然而,依赖这样的默认值通常被认为是糟糕的编程风格。”
但有一些强烈的论据不这样做 - 请参阅下面接受的答案。
编辑 2
我发现在某些情况下boolean值必须初始化,否则代码将无法编译:
boolean someValue;
if (someValue) { // Error here
// Do something
}
在我的 NetBeans IDE 中出现错误 - “变量 someValue 可能尚未初始化”。
越来越有趣了.. :)
【问题讨论】:
-
其实有细微的差别,但最终的结果是一样的。一般来说,你应该更喜欢第一个。
-
@morgano:如果另一个开发人员不知道默认值,那么他最终会学习并了解它们。这是必须知道的。
-
@JBNizet 在理想的世界里,每个人都应该是专业的,知道自己在做什么;不幸的是,我们生活在地球上,这不会发生,拥抱它!
-
无所不知也没有问题。拒绝学习是有问题的。得知 Java 字段具有明确定义的默认值有什么问题?根据您的推理,您还应该添加注释“这将 false 分配给变量 someValue”,以防开发人员并不真正了解分配是什么。如果代码依赖于诸如
a += j++ - --b之类的晦涩规则,我会同意您的看法,但默认值不在此级别。 -
这是一个好问题,值得重新讨论。在 Java 中,
boolean和Boolean是非常不同的野兽;标记重复的人可能没有意识到这一点。不幸的是,他们对一个他们没有充分研究的主题进行了投票。