新手问题:

我有两节课:

class A {
    public static void main(String...args){
        B b = new B()
        System.out.println(B.firstVar); // 0
    }
}

class B {
    public int firstVar;
}


当没有为firstVar赋值时,为什么打印0?

最佳答案

第一件事,您的代码中有两个错误

一个缺少分号:

 B b = new B()


其次是尝试使用具有类名称的非静态成员

System.out.println(B.firstVar);


它应该是

System.out.println(b.firstVar);


回答您的问题:调用构造函数时,它将成员变量/类的属性初始化为各自的类型默认值。

输入默认值(用于字段)
字节0
短0
整数0
长0L
浮动0.0f
两倍0.0d
字符'\ u0000'
字符串(或任何对象)为null
布尔值false


这就是为什么即使没有初始化它也会打印0

注意:局部变量略有不同。编译器永远不会将默认值分配给未初始化的局部变量。

10-06 16:13