我有一个关于 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 - 当我要评论它value = 2时case 2:,尖叫声说The local variable value may not have been initialized。
问题:
场景1:如果执行流程不去case 1:(当key = 2),那么它如何知道值变量的类型为int?
场景 2:如果编译器知道 value 变量的类型为int,那么它必须访问int value = 1;过 .(声明和初始化)中的表达式case 1:。那为什么它会吱吱作响,当我要评论value = 2时case 2:,说局部变量值可能尚未初始化。