令我惊讶的是,这段代码运行良好:
int i = 2;
switch(i) {
case 1:
String myString = "foo";
break;
case 2:
myString = "poo";
System.out.println(myString);
}
但是永远不应声明String引用?是不是每个案例下的所有变量都被声明,无论是什么,或者如何解决?
答案 0 :(得分:7)
嗯,这是关于括号(即范围)。
可以说,更好的做法是写下你的陈述:
int i = 2;
switch(i) {
case 1: {
String myString = "foo";
break;
}
case 2: {
myString = "poo";
System.out.println(myString);
}
}
(我现在不在Java编译器附近,但不应该编译)。
答案 1 :(得分:3)
myString声明的范围是switch块({character is)。如果你这样写,那么声明就是每个案例:
int i = 2;
switch(i) {
case 1: {
String myString = "foo";
break;
}
case 2: {
String myString = "poo";
System.out.println(myString);
}
}