编译器无法看到的分支

uml*_*uml 5 java if-statement

这是Java语言中的代码片段:

 public void name(){
int value = 9;
 int o;
if(value > 9)
 o = 5;

if(value <= 9)
o = 8;

System.out.println(o);
}
Run Code Online (Sandbox Code Playgroud)

为什么编译器在考虑值的最后一个选项时看不到第二个if语句?它不会编译.最好的祝福

das*_*ght 5

value除非另有说明,否则编译器必须视为可更改.声明它可以final 解决问题:

public void name(){
    final int value = 9;
    int o;
    if(value > 9) o = 5;
    if(value <= 9) o = 8;
    System.out.println(o);
}
Run Code Online (Sandbox Code Playgroud)