有没有理由为什么Java的设计者觉得局部变量不应该被赋予默认值?说真的,如果实例变量可以给出一个默认值,为什么我们不能对局部变量做同样的事情呢?
它也会导致问题,如本评论中对博客文章的解释:
这个规则在尝试关闭finally块中的资源时最令人沮丧.如果我在try中实例化资源,但尝试在finally中关闭它,我会收到此错误.如果我在try之外移动实例化,我会收到另一个错误,指出它必须在try中.
很沮丧.
为什么在类中声明的变量具有默认值,但在方法中声明的变量(称为"局部变量")在Java中没有默认值?
例如
class abc
{
int a;
public static void main(String ss[])
{
int b;
abc aa=new abc();
System.out.println(aa.a);
System.out.println(b);
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,变量的a默认值为0,但变量b会给出错误,表明它可能尚未初始化.
class TestMe{
public static void main (String args[]){
String s3;
System.out.print(s3);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么编译器给出错误,引用对象的默认值为null,为什么它不是输出... ??
error: variable s3 might not have been initialized