【发布时间】:2012-06-11 13:51:33
【问题描述】:
Java 编译器如何处理下面的 switch 块? 'b' 变量的作用域是什么?
请注意,“b”变量仅在 switch 语句的第一个分支中声明。尝试在第二个分支中声明它也会导致“重复的局部变量”编译错误。
int a = 3;
switch( a ) {
case 0:
int b = 1;
System.out.println("case 0: b = " + b);
break;
case 1:
// the following line does not compile: b may not have been initialized
// System.out.println("case 1 before: b = " + b);
b = 2;
System.out.println("case 1 after: b = " + b);
break;
default:
b = 7;
System.out.println("default: b = " + b);
}
注意:以上代码使用 java 1.6 编译器编译。
【问题讨论】:
标签: java scope initialization switch-statement variable-declaration