这是关于
Java优化的一个非常基本的问题.
如果你有一个简单的for循环迭代数组并在循环的头部使用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,
更重要的是,除非该字段是易变的,否则JVM将做出这种假设,无论它是否真实.