我有一个关于 Java 交换机的疯狂问题。
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
,说 局部变量值可能尚未初始化。