我对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:
,saying地说“本地变量值可能尚未初始化”。
问题:
场景1:如果执行流程没有转到case 1:
(当时key = 2
),那么它如何知道value变量的类型为int
?
方案2:如果编译器将value变量的类型识别为int
,则它必须已访问。(声明和初始化)中的int value = 1;
表达式case 1:
。那为什么它会吱吱作响?当我要发表评论value = 2
时case 2:
,说本地变量值可能没有初始化。