在Java代码中,我觉得这样的:在for声明中调用.length()比在循环之前调用慢?
for (int i = 0; i < s.length(); i++) {
// do a lot of something
}
比这更慢:
int length = s.length();
for (int i = 0; i < length; i++) {
// do a lot of something
}
请告诉我,我是否正确。
在Java代码中,我觉得这样的:在for声明中调用.length()比在循环之前调用慢?
for (int i = 0; i < s.length(); i++) {
// do a lot of something
}
比这更慢:
int length = s.length();
for (int i = 0; i < length; i++) {
// do a lot of something
}
请告诉我,我是否正确。
理论上,第一个代码示例可能会比较慢,因为它在每次迭代中调用s.length()
一次。但是有可能JVM会为你优化第一段代码。使用更简单的方法,除非基准测试显示:
最有可能不是。 – assylias 2012-07-14 22:24:02
's'的类型是什么? – 2012-07-14 22:35:51
它取决于's.length()'的实现。什么是's'? – 2012-07-15 04:07:47