我有一个有关Java中switch语句的疯狂问题。
int key = 2;
switch (key) {
case 1:
int value = 1;
break;
case 2:
value = 2;
System.out.println(value);
break;
default:
break;
}
场景1 - 当 key
为2时,成功将值打印为2。
场景2 - 当我要在 case 2:
中注释掉 value = 2
时,它会发出警告,提示 本地变量值可能未初始化。
问题:
场景1:如果执行流不进入 case 1:
(当 key = 2
时),那么它怎么知道值变量的类型是 int
?
场景2:如果编译器知道值变量的类型是 int
,那么它一定已经访问了 case 1:
中的表达式 int value = 1;
(声明和初始化)。那么为什么当我试图在 case 2:
中注释掉 value = 2
时,它会发出警告,提示 本地变量值可能未初始化?