问题描述
Java 的设计者有什么理由认为局部变量不应该被赋予默认值?说真的,如果可以给实例变量一个默认值,那为什么我们不能对局部变量做同样的事情?
Was there any reason why the designers of Java felt that local variables should not be given a default value? Seriously, if instance variables can be given a default value, then why can't we do the same for local variables?
它也会导致问题,如 这篇对博客文章的评论:
And it also leads to problems as explained in this comment to a blog post:
当试图关闭 finally 块中的资源时,这条规则最令人沮丧.如果我在 try 中实例化资源,但尝试在 finally 中关闭它,则会出现此错误.如果我将实例化移到 try 之外,我会收到另一个错误,指出它必须在 try 内.
非常令人沮丧.
推荐答案
声明局部变量主要是为了做一些计算.所以设置变量的值是程序员的决定,不应该取默认值.
Local variables are declared mostly to do some calculation. So it's the programmer's decision to set the value of the variable and it should not take a default value.
如果程序员错误地没有初始化一个局部变量并且它采用了默认值,那么输出可能是一些意想不到的值.所以对于局部变量,编译器会要求程序员在访问变量之前用某个值初始化它,以避免使用未定义的值.
If the programmer, by mistake, did not initialize a local variable and it takes a default value, then the output could be some unexpected value. So in case of local variables, the compiler will ask the programmer to initialize it with some value before they access the variable to avoid the usage of undefined values.
这篇关于为什么在 Java 中没有初始化局部变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!