新手问题:
我有两节课:
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
注意:局部变量略有不同。编译器永远不会将默认值分配给未初始化的局部变量。