首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

成员变量和局部变量初始化的有关问题

2012-01-20 
成员变量和局部变量初始化的问题public class TestSwitch{public static void main(String args[]){TestSw

成员变量和局部变量初始化的问题
public class TestSwitch{
public static void main(String args[]){
TestSwitch tni = new TestSwitch();
String s = tni.convert(4);
System.out.println(s);
}

public String convert(int n){
String day;//这里为什么可以不用初始化?难道day是成员变量吗
switch(n){
case 1: 
day = "星期一";
break;
case 2: 
day = "星期二";
break;
case 3: 
day = "星期三";
break;
case 4: 
day = "星期四";
break;
case 5: 
day = "星期五";
break;
case 6: 
day = "星期六";
break;
case 0: 
day = "星期日";
break;
default:
day = "非法";
break;
}
return day;
}
}

[解决办法]
你把switch中的default去掉试试,或者只是把default中的day的赋值去掉就明白了。
switch中存在default情况,编译器能分析出你使用day之前肯定初始化了。

而循环的情况下,编译器不会分析循环是不是真正执行,并不能保证在输出result之前已经初始化了。
比如你写个
for(int i=1;i <=100;i++){ 
还是
for(int i=1;i <=0;i++){
对编译器的分析行为是没有影响的 

热点排行
Bad Request.