Mar*_*ers 21

自动赋值为零仅适用于成员,而不适用于局部变量.如果它是局部变量并且= 0省略,则该变量没有值,甚至不为零.尝试在分配之前使用该值将导致编译错误.例如,此代码尝试使用未初始化的局部变量:

public class Program
{   
    public static void main(String[] args)
    {
        int numOfGuesses;   // local variable
        System.out.println(numOfGuesses);
    }
}
Run Code Online (Sandbox Code Playgroud)

并产生此编译错误:

Program.java:6: variable numOfGuesses might not have been initialized
        System.out.println(numOfGuesses);
Run Code Online (Sandbox Code Playgroud)

使用成员的代码工作并输出零:

public class Program
{   
    int numOfGuesses; // member variable

    public void run()
    {
        System.out.println(numOfGuesses);
    }

    public static void main(String[] args)
    {
        new Program().run();
    }
}
Run Code Online (Sandbox Code Playgroud)

对于成员,如果我的代码使用初始zalue为零的事实,我倾向于将其分配为零,如果我的代码不使用初始值,则忽略赋值(例如,如果值在构造函数或其他地方分配) ).结果是相同的两种方式,所以这只是一个样式问题.