在语言规范中它说:
局部变量在使用前必须设置.虽然所有其他变量都自动初始化为默认值,但Java编程语言不会自动初始化局部变量,以避免屏蔽编程错误.
什么是完全掩盖编程错误在Java?
解释这一点的一个例子很好.
谢谢
要理解这一点,您需要与C/C++的作用进行比较.在C/C++中,局部变量在声明时包含垃圾值.因此,如果您忘记分配值,编译器将不会抱怨并且对此类局部变量的所有引用都将使用垃圾值,从而导致意外行为.
在Java中,这种未初始化的局部变量会导致编译时错误,使开发人员在使用它之前将其显式初始化为有意义的默认值.
C/C++
int do_something(int value) {
int i;
if (value > 10) {
i = value;
}
return i;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码片段在C++中有效,但在java中无效.
int doSomething(int value) {
int i;
if (value > 10) {
i = value;
}
//
// This line will throw a compile-time error that
// `i` may not have been initialized.
//
return i;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
402 次 |
最近记录: |