将布尔值设置为false冗余?

tri*_*age 8 java boolean initialization variable-declaration

我已经阅读了关于这个主题的几个先前提出的问题和答案[或非常相似],但他们都没有真正解决这一点.在声明一个新的布尔变量时,将它初始化为false是多余的[例如不必要]吗?

boolean selectedZone = false;
Run Code Online (Sandbox Code Playgroud)

而不是宣布

boolean selectedZone;
Run Code Online (Sandbox Code Playgroud)

我看过的其他帖子是 为什么Java的默认值为Boolean设置为true?java中布尔值的默认值

res*_*man 7

在大多数情况下,它是多余的.例外情况是它是一个局部变量,在这种情况下需要在使用之前进行初始化.例子:

class Example{
    boolean value1;//valid, initialized to false
    public void doStuff(){
        boolean value2;//valid, but uninitialized
        System.out.println(value1);//prints "false" (assuming value1 hasn't been changed)
        System.out.println(value2);//invalid, because value2 isn't initialized. This line won't compile.
Run Code Online (Sandbox Code Playgroud)

一些文档:https://web.archive.org/web/20140814175549/https : //docs.oracle.com/javase/specs/jls/se5.0/html/typesValues.html#96595

即使变量已初始化,您仍可能希望显式声明其初始值.它可以使代码更清晰,让人们阅读代码时知道将其设置为该值是有意识的决定.

有关


Era*_*ran 5

这是多余的,但我觉得它更清晰。

这同样适用于:

int var = 0;
Run Code Online (Sandbox Code Playgroud)

int var;
Run Code Online (Sandbox Code Playgroud)

这不是我编造的:

默认值

声明字段时并不总是需要赋值。声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值为零或空,具体取决于数据类型。然而,依赖这样的默认值通常被认为是不好的编程风格。

下图总结了上述数据类型的默认值。
数据类型 默认值(对于字段)
byte 0
Short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
String(或任何对象) null
boolean false

来源

但是,正如注释所暗示的,如果它是局部变量,则必须对其进行初始化。