Java 的设计者是否有任何理由认为不应该为局部变量赋予默认值?说真的,如果可以给实例变量一个默认值,那为什么我们不能为局部变量做同样的事情呢?
它还会导致问题,如 博文评论中所述:
当试图在 finally 块中关闭资源时,这条规则最令人沮丧。如果我在 try 中实例化资源,但尝试在 finally 中关闭它,我会收到此错误。如果我将实例化移到 try 之外,我会收到另一个错误,指出它必须在 try 中。
非常令人沮丧。
原文由 Shivasubramanian A 发布,翻译遵循 CC BY-SA 4.0 许可协议
声明局部变量主要是为了进行一些计算。所以设置变量的值是程序员的决定,它不应该采用默认值。
如果程序员错误地没有初始化局部变量并且它采用默认值,那么输出可能是一些意想不到的值。所以在局部变量的情况下,编译器会要求程序员在访问变量之前用一些值初始化它以避免使用未定义的值。