有两个变量“a”和“b”未初始化。“a”变量属于示例 1 类,“b”变量属于 Main 类

Amo*_*dey 4 java oop

有两个变量ab,未初始化。a变量属于 class Example1b变量属于 class Main。我们知道,如果我们没有在 java 中初始化任何变量,那么它就会采用默认值。但是当我想打印Main类的变量时,它显示初始化错误。但是当我调用Example1类变量时,它成功执行并给出默认值。

其背后的确切原因是什么?

class Example1 {
    int a;
}
public class Main
{
    public static void main(String[] args) {
        int b;
        Example1 e = new Example1();
        System.out.println(e.a);        // output: 0
        System.out.println(b);          // error: variable a might not have been initialized
        
    }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*pUp 5

当你写:

int b; // this is declaration
Run Code Online (Sandbox Code Playgroud)

int b;是一个局部变量。方法局部变量在使用之前需要初始化。这就是你出错的原因。

当你写的时候

 int b = 0; // this is initialization
Run Code Online (Sandbox Code Playgroud)

当你写:

  Example1 e = new Example1();  // This is an initialization
Run Code Online (Sandbox Code Playgroud)

当声明为类成员时,原始默认值为零。