有没有理由为什么Java的设计者觉得局部变量不应该被赋予默认值?说真的,如果实例变量可以给出一个默认值,为什么我们不能对局部变量做同样的事情呢?
它也会导致问题,如本评论中对博客文章的解释:
这个规则在尝试关闭finally块中的资源时最令人沮丧.如果我在try中实例化资源,但尝试在finally中关闭它,我会收到此错误.如果我在try之外移动实例化,我会收到另一个错误,指出它必须在try中.
很沮丧.
请考虑以下方法:
void a ()
{
int x;
boolean b = false;
if (Math.random() < 0.5)
{
x = 0;
b = true;
}
if (b)
x++;
}
Run Code Online (Sandbox Code Playgroud)
在x++我得到的"局部变量可能尚未初始化"的错误.很明显,x永远不会被初始化.除了初始化x之外,有没有办法抑制警告?谢谢.