关于java 类型初始化有关问题

关于java 类型初始化问题
public class BSort
{
public static void main(String[] args) 
{
int b;
System.out.println(b);
}
}
//BSort.java:7: 错误: 可能尚未初始化变量b
//程序为什么会出错啊,类型值得默认值不是0吗,怎么不是输出0
Java

------解决方案--------------------
把int b放在main方法之外,就能产生你想要的结果了。
------解决方案--------------------
引用:
Quote: 引用:

把int b放在main方法之外,就能产生你想要的结果了。
请问这是为什么

成员变量和局部变量的区别
------解决方案--------------------
怎么说呢。java就是这么规定的
函数体之外的int就是会被初始化为0。
这也是和C++的区别吧。当这样这样做效率会降低的
我感觉java就是牺牲了效率,方便了程序员
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

把int b放在main方法之外,就能产生你想要的结果了。
请问这是为什么

成员变量和局部变量的区别
成员变量和局部变量的区别 不是 作用域不同吗

java中成员变量和局部变量的区别
1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型
2.成员变量存储在堆,局部变量存储在栈
3.存在时间不同
4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量没有默认值