1

效率方面有区别吗

int[] numbers = {1,2,3,4,5,6,7,8,9,10};
for (int item : numbers) {
   System.out.println("Count is: " + item);
}

int[] numbers = {1,2,3,4,5,6,7,8,9,10};
for (int i = 0; i < 10; i++) {
   System.out.println("Count is: " + numbers[i]);
}
4

5 回答 5

5

它们对于数组是相同的。如果你有一个数字的订单列表,你应该使用

for(int i = min; i <= max; max += stride)

或者

for(int i = min; i < max+stride; max += stride)

例如

for(int i = 1; i < 11; i++)

或者

for(int i = 1; i <= 10; i++)

或者如果增加 10

for(int j = 0; j <= 100; j += 10)

如果您使用预定义的值列表,则可以使用数组。

我经常这样写

for (int item : new int[] {1, 2, 5, 10, 20, 50, 100}) 
   System.out.println("Count is: " + item);
于 2012-10-22T20:04:54.527 回答
3

实际上,为您的两个代码片段生成的字节码几乎完全相同。您可以使用 javap 之类的工具来检查它,甚至可以在 Eclipse 的反编译类查看器中查看它。

于 2012-10-22T20:04:23.153 回答
3

对于Array [], 它相似,但对于Collections诸如ArrayList,它会有所不同。

于 2012-10-22T20:08:36.900 回答
1

除非你在循环中做一些非常奇怪的事情,否则性能上的差异是无法察觉的。无论问题的答案是什么,这都是“一分钱一分货”的优化。应该根据您需要哪些功能以及哪些代码更清晰做出决定。(IMO,选项 1 更简单明了,但有时您需要选项 2)

在程序的整个生命周期中,您输入问题和阅读答案所花费的时间可能比在循环中花费的时间要多。:-)

不知道在哪里问这个,但我认为应该有一些“过早的优化”标签我们可以添加到这样的问题中。

于 2012-10-22T20:12:29.407 回答
0

它的性能将非常相似,因此您可以选择自己喜欢的。对我来说,for-each 总是更优雅,但每个程序员都不一样^^

于 2012-10-22T20:07:12.143 回答