否,呼叫
array.lengthis O(1)或固定时间操作。
由于
.lengthis(的行为类似于)的
public final成员
array,因此访问它的速度不会比局部变量慢。(这与对的方法的调用非常不同
size())
.length无论如何,现代的JIT编译器很可能会优化调用。
你可以通过查看OpenJDK中的JIT编译器的源代码,或通过使JVM转储JIT编译的本机代码并检查代码来确认这一点。
注意,在某些情况下,JIT编译器无法做到这一点;例如
- 如果你正在调试封闭方法,或者
- 如果循环体具有足够的局部变量以强制寄存器溢出



