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中布尔值的默认值
在大多数情况下,它是多余的.例外情况是它是一个局部变量,在这种情况下需要在使用之前进行初始化.例子:
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
即使变量已初始化,您仍可能希望显式声明其初始值.它可以使代码更清晰,让人们阅读代码时知道将其设置为该值是有意识的决定.
这是多余的,但我觉得它更清晰。
这同样适用于:
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
(来源)
但是,正如注释所暗示的,如果它是局部变量,则必须对其进行初始化。