我对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:,说本地变量值可能没有初始化。