自动变量赋值?

时间:2014-03-27 08:34:54

标签: java

新手问题:

我有两个班级:

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?

4 个答案:

答案 0 :(得分:2)

0值是int类型的默认值。

这里有一些其他默认值:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

答案 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)