为什么在Java中,在类中声明的变量有默认值,而在方法内部声明的变量(被称为“局部变量”)却没有默认值呢?
例如:
class abc
{
int a;
public static void main(String ss[])
{
int b;
abc aa=new abc();
System.out.println(aa.a);
System.out.println(b);
}
}
在上面的例子中,变量 a
的默认值为0,但变量 b
会出现错误,因为它可能未被初始化。
int a
实际上有一个默认值为0
。 - FThompsonb
是一个局部变量,在那部分代码中没有被初始化。当赋值时,它会被初始化。 - x4rf41a
不同,b
在栈中分配,出于性能考虑,它没有被清零。(更准确地说:实现不需要将其清零,因为这会限制实现的性能而带来很少的好处) - kiheru