答案 0 :(得分:2)
javac
不会优化。所有3个案例is different都生成字节码。 (javac Test.java
编译,javap -c Test.class
显示字节码)
Java虚拟机可以优化。
JMH基准显示了明显的赢家:
Benchmark Mode Cnt Score Error Units
MyBenchmark.testA thrpt 20 423.437 ± 6.745 ops/s
MyBenchmark.testB thrpt 20 337.728 ± 56.363 ops/s
MyBenchmark.testC thrpt 20 351.419 ± 70.290 ops/s
单位是每秒的操作,越多越好。 Benchmark source code。使用OpenJDK IcedTea 2.5.4 Java虚拟机。
因此,在外部声明和初始化变量应该是最有效的。