众所周知,在Java中使用局部变量之前需要初始化它(参见JLS)
必须在使用局部变量(§14.4、§14.14)之前,通过初始化(§14.4)或赋值(§15.26)显式地给它一个值,以便可以使用明确分配(§16)的规则进行验证。
否则会出现编译器错误:
The local variable result may not have been initialized.
这个设计决策的理由是什么?为什么编译器不会自动将声明(例如
int x
、double y
、String foo
等)转换为使用一些默认值(0、0.0、null)初始化的定义?这样做有什么缺点吗?