【发布时间】:2014-10-21 19:14:12
【问题描述】:
我一般会写
for (int i = 0, n = someMethod(); i < n; i++)
优先于
for (int i = 0; i < someMethod(); i++)
避免someMethod() 被重复计算。但是,我永远不确定何时需要这样做。 Java 在识别每次都会给出相同结果并且只需要在循环开始时执行一次的方法方面有多聪明?
【问题讨论】:
-
为什么你不能像 `int n = someMethod();'然后在循环中使用 n?
-
Adi,这基本上就是我在第一个示例中所做的。我的问题是什么时候需要先计算 n 。我确信在某些情况下,我编写的第二种方式无论如何都会像第一种方式一样被对待,但我可能错了。
-
即使每次都给出相同的结果,Java 是否可以确定该方法不会执行其他操作(例如日志记录)。我认为它必须每次都调用。
-
您的第一个样式比在循环外声明上限的某些答案中的示例要好。尽可能将变量保持在最紧凑的范围内使代码更易于理解。
标签: java optimization jit