public class Test{
static int c;
public static void main(String args[]){
int a = 56789;
int b;
if(a>0){
b = a%10;
}
System.out.println(b+","+c);
}
}
使用如上代码编译时会报错:
TestPrint.java:10: 可能尚未初始化变量 b
System.out.println(b+","+c);
^
1 错误
看错误就知道是因为b没有初始化,那么就会感到奇怪了,Java里面的变量不是自动初始化么?就算我不初始化,他也应该是0呀。这里就要理解局部变量和成员变量的区别了。
1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型
2.成员变量存储在堆,局部变量存储在栈
3.存在时间不同
4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值