Java 为什么此处x默认为0?


public class AAA {
    int x;   // 0
    public static void main(String[] args) {
        int y;
        AAA a = new AAA();
        // y = 3 / a.x;   // ArithmeticException
        System.out.println(a.x);
    }
}

我预想的结果是报错:尚未初始化变量x,但是最后结果是说x = 0。 为什么此处x默认为0,是因为x是全局变量吗?

在java中,局部变量不初始化会报错
而全局变量和成员变量会有默认值
这里x是类AAA 的成员变量,不是全局变量

成员变量 如果没有初始化都会有个默认值, 基本数据类型就是各自对应的0值,对象就是null
只有局部变量 ,未初始化就使用才会有问题

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在Java中,实例变量会在对象被创建时自动初始化为默认值,而默认值是与类型有关的。对于int类型,其默认值为0。因此在上述代码中,当创建了一个AAA对象时,其中的实例变量x会被自动初始化为0,即使没有显式地对其进行赋值。
`
在方法中声明的局部变量没有默认值,必须显式地进行初始化后才能使用,否则编译器会提示错误。在代码中,因为变量y没有被初始化,所以会报错。

我个人觉得,你定义的x是AAA类中的成员变量,然后用AAA()构造器构造了a这个对象并对类中的对象进行初始化,而x是int型的,初始化的值是0