Java 循环效率(“for” vs. “foreach”)
2022-09-01 12:28:42
(对于那些非常了解JVM编译和优化技巧的人来说,这是一个问题... :-)
是否有任何“for”和“foreach”模式明显优于其他模式?
请考虑以下两个示例:
public void forLoop(String[] text)
{
if (text != null)
{
for (int i=0; i<text.length; i++)
{
// Do something with text[i]
}
}
}
public void foreachLoop(String[] text)
{
if (text != null)
{
for (String s : text)
{
// Do something with s, exactly as with text[i]
}
}
}
比 更快还是更慢 ?forLoop
foreachLoop
假设在这两种情况下,数组都不需要任何健全性检查,那么是否有明显的赢家或仍然太接近而无法进行调用?text
编辑:正如在一些答案中所指出的,数组的性能应该是相同的,而对于抽象数据类型(如List),“foreach”模式可能会稍微好一些。另请参阅讨论该主题的此答案。