【发布时间】:2013-08-16 02:11:13
【问题描述】:
为什么在类中声明的变量有默认值,而在方法中声明的变量,称为“局部变量”,在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。 -
对象的整个内存块总是用零填充,这就是为什么对象中的所有变量都默认为 0,
b是一个局部变量,根本没有在该部分初始化。它在赋值时被初始化 -
但是 y b 变量没有默认值?
-
b在堆栈中分配,与a不同,并且出于性能原因不会归零。 (或更正确地说:实现不需要清除它,因为它必然会限制实现的性能而几乎没有收益) -
请使用大写——我再也不会编辑你的个帖子了