新手问题:
我有两个班级:
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?
答案 0 :(得分:2)
答案 1 :(得分:1)
第一件事你的代码中有两个错误
一个缺少分号:
B b = new B()
其次是尝试使用具有类名
的非静态成员System.out.println(B.firstVar);
应该是
System.out.println(b.firstVar);
回答你的问题:当调用构造函数时,它会将类的成员变量/属性初始化为相应类型的默认值。
Type Default Value (for fields) byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char '\u0000' String (or any object) null boolean false
即使没有初始化,也会打印0
注意:局部变量略有不同;编译器永远不会为未初始化的局部变量赋予默认值。
答案 2 :(得分:0)
这就是Java初始化变量的方式。
例如,int用0
初始化,对象用null
Object obj; // obj is null
int i; // i is 0
double d; //d is 0
答案 3 :(得分:0)
当你没有为变量设置任何内容时,默认情况下会为它分配一个零(如果是int)