java-switch-case语句中关于变量问题很容易出现的两种错误
1.同一个定义域内定义重名变量
2.使用未被初始化的变量
第一种情况:
public class Text13 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 1;
switch(i) {
case 1:
int a = 1;
System.out.println(a);
break;
case 2:
//int a = 1;
//System.out.println(a);
break;
}
}
switch-case里面定义的变量只能在switch选择语句内有效,同一作用域下不能出现同名的变量。
第二种情况
public class Text13 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 1;
switch(2) {
case 1:
int a;
break;
case 2:
//System.out.println(a);
break;
}
}
}
刚开始我没搞明白,既然a的作用域是在switch-case内,为什么在case2里面无法调用a的值呢?其实问题不在于能不能调用a,而是只能执行其中的一种情况,从而导致a没有初始化。