for (int i = 0; i < array.length; ++i) {
do something referencing array[i]
do something referencing array[i]
....
}
在这样的代码中,设置currentValue = array[i]
之类的变量然后引用而不是array[i]
是否真的有用?我觉得编译器足够聪明,可以做类似的事情并使这些代码变得毫无意义。
答案 0 :(得分:4)
如果您读取编译器生成的字节代码,您将看到它没有进行此类优化。这意味着在解释模式下,每次都会进行数组查找。如果循环的方法运行了很多次,那么JIT编译器将再次查看它并且可以优化它。
结论:如果您想要可预测的结果,请将数组元素存储在局部变量中。更重要的是,这样代码也变得更具可读性。