这是一个关于 Java 优化的非常基本的问题。
如果您有一个简单的 for 循环来遍历数组并在循环的 header 中使用 array.length 而不是之前对其进行评估,这样您就只执行一次(我几乎总是这样做):
for(int i=0; i<array.length;i++) { ... }
能否优化该语句,使 JVM 知道数组在循环期间是否发生变化,从而不必每次都重新计算 array.length
?
最佳答案
if another thread is not modifying the array concurrently, will array.length be effectively evaluated only once,
更关键的是,除非该字段是 volatile
,否则 JVM 将做出这个假设,无论它是否正确。
关于Java 优化器和冗余数组评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14711125/