|
|
1
21
斯蒂芬·科尔伯恩(Joda Time,JSR-310等)很好地总结了其优点和缺点。 Enhanced for each loop iteration control 建议在Java 7中扩展它:
综上所述,增强的for循环提供了一种简洁的高级语法,可以循环遍历列表或数组,从而提高了清晰度和可读性。但是,它遗漏了一些部分:允许访问索引循环或删除项。 也见 |
|
|
2
12
对我来说,很明显,主要的优点是可读性。
显然比
|
|
|
3
4
我认为这在介绍它的文档页面中得到了很好的总结。 here .
如此真实…
确切地
我想再总结一下,但我认为那个页面做得非常完美。 |
|
|
4
3
您可以迭代任何可iterable的集合以及数组。 你根本不应该担心性能差异。 可读性 很重要。
请注意,如果需要在迭代时删除元素,则需要使用
例如,
你不能用
|
|
|
5
2
更清晰的语法! 从性能的角度来说没有区别,因为这只是程序员的一个便利。 |
|
|
6
1
正如其他人所说,增强的for循环提供了更清晰的语法、可读的代码和更少的类型。 此外,它还避免了可能出现的“索引越界”错误场景。例如,当手动迭代列表时,可能会以错误的方式使用索引变量,例如:
这将引发异常。但是,为了增强for循环,我们将把迭代任务留给编译器。它完全避免了错误情况。 |
|
|
7
1
主要缺点是创建了一个迭代器,它不存在基于索引的循环。 这通常是可以的,但在性能关键的部分(例如在实时应用程序中,当它必须每秒运行数百次时),它会导致主要的GC干预… |
|
|
8
0
正如其他人已经回答的,这是一个语法糖为清洁。如果与类迭代器循环进行比较,您将发现少了一个必须声明的变量。 |
|
|
9
0
foreach/enhanced for/for循环用于在数据对象上提供光标。当您考虑到_156;逐行_157;或_156;逐行浏览结果集记录时,这一点尤其有用,因为它简单且易于实现。 与基于索引的方法相比,这还提供了一种更为通用和改进的迭代方法,因为调用方(for loop)不再需要知道如何获取值、集合大小或其他实现细节。 |
|
|
10
0
它更简洁。唯一的问题是空检查。
|
|
11
-2
少打字!还有来自编译器的更多帮助 |
|
|
12
-3
增强的for循环提供以下主要优势:
它消除了重复计算
或者,您可以使用一个附加变量计算循环外部的大小,如下所示:
|
|
|
Matt · 获取数组长度并推入每个对象 3 年前 |
|
|
Pouya · Foreach循环不添加计数器 4 年前 |
|
|
Andrea De Luca · 修改forEach中的元素使条目加倍 4 年前 |
|
|
XFMW · 为什么我的foreach循环不能统一编译?[重复] 4 年前 |
|
|
Red · 为什么我的字体大小不适合香草js? 4 年前 |
|
|
aRTURIUS · Terraform for_每个问题的数据类型 4 年前 |
|
|
Yerkin · 条件不适用于PHP和mysqli 4 年前 |