什么是Java中的掩码编程错误?

sky*_*ar7 2 java

在语言规范中它说:

局部变量在使用前必须设置.虽然所有其他变量都自动初始化为默认值,但Java编程语言不会自动初始化局部变量,以避免屏蔽编程错误.

什么是完全掩盖编程错误在Java?

解释这一点的一个例子很好.

谢谢

Vik*_*dor 6

要理解这一点,您需要与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)