fas*_*ava 3 java compiler-construction if-statement
如果有以下代码我在eclipse中正确地在else处获得警告,如果代码:
final int x = 8;
if (x < 10) {
System.out.println(x);
} else if (x < 5) {
System.out.println(x);
}
Run Code Online (Sandbox Code Playgroud)
但如果我更换线路,我不会收到任何警告
final int x = 8;
Run Code Online (Sandbox Code Playgroud)
同
final int x = getX();
Run Code Online (Sandbox Code Playgroud)
getX() 在某处定义.
这是什么原因?
bsi*_*nau 11
JVM知道x 在编译时总是小于10,但如果你替换x声明
final int x = getX();
Run Code Online (Sandbox Code Playgroud)
JVM将知道x仅在运行时进行比较的值
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |