给定以下代码:
public class MainClass {
public static int f(){
int i=0;
i++;
return i;
}
}
编译器 javac 生成以下代码:
Compiled from "MainClass.java"
public class latte_jvm.MainClass {
public static int f();
Code:
0: iconst_0
1: istore_0
2: iinc 0, 1
5: iload_0
6: ireturn
}
函数 f 做了非常简单的事情——它只返回 1。它的翻译如此直接,以至于我很难相信 java 编译器会进行任何优化。为什么 java 编译器的创建者决定在编译阶段不做这样的优化?