Javaコンパイラは次のスイッチブロックをどのように処理しますか?'b'変数のスコープは何ですか?
'b'変数は、switchステートメントの最初のブランチでのみ宣言されていることに注意してください。2番目のブランチでも宣言しようとすると、「ローカル変数の重複」コンパイルエラーが発生します。
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);
}
注:上記のコードは、Java1.6コンパイラーでコンパイルされます。