想知道访问实例变量是否更好或者在本地存储其值。 例如:
方法一:
while (ctr < arr.length ) {
sysout(arr[ctr++]);
}
VS
方法2:
int length = arr.length
while (ctr < length) {
sysout(arr[ctr++];
}
看起来Method1更干净,因为它不需要任何额外的变量声明。 在这种情况下使用方法2有什么好处吗?
要使问题通用,在这种情况下最佳做法是什么?
谢谢,
答案 0 :(得分:5)
答案:没关系。
编译器会将其编译为完全相同的字节码(在这种情况下很可能),或者JIT会在运行时将其激活并使这两种解决方案等效。
执行Java时的主要目标是执行明显正确的代码。让编译器和JIT处理性能。
答案 1 :(得分:1)
我猜第二种方法的速度要快得多,因为在第二种情况下,运行时不必每次都在循环中执行arr.length
。然而,差异是非常微不足道的。由于数组的length
属性类似于public final member
,因此获取length
是一个恒定时间操作。如果您完成了list.size()
,那将是不同的情况。