javac
编译器优化代码是一个常见的误解。它在 99% 的情况下都不会,并且主要是对您编写的字节码的内容进行字面翻译。
所有优化都在运行时的 JIT 中。这意味着为 JDK 1.0 编译的代码将在最新的处理器上运行,与遵循 Java 7 或 8 的最新更新的相同代码一样有效。
注意:编译器在计算编译时已知的常量时进行了少量优化。例如1+1
=> 2 和"hello " + "world"
=> “你好世界”。这些优化多年来并没有太大变化,它们在 Java 1.2 中就已经存在,可能更早。
编译你会得到一组以原始 1.4 VM 为目标的指令
自 Java 1.0 以来,Java 7 中只添加了一条字节码指令,而 Java 不使用它。添加它是为了支持在 JVM 上运行的动态语言。
在运行代码或编译类的 VM 中进行最多的优化
你可以假设它确实如此。Java 1.0 - 1.4 将使用 StringBuffer 进行字符串连接,而 Java 5.0+ 将使用稍微优化的 StringBuilder。差异很小(但可以测量)
请保存评论,因为 1.4 已经过时了,
Java 6 已经过时了,而 Java 8 将使 Java 7 看起来非常过时(当它最终在今年某个时候发布时)