我有一个关于 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:
,说局部变量值可能尚未初始化。