- foreach
foreach编译成字节码之后,使用的是迭代器实现的。
foreach特点:
- 无须获取容器大小
- 需要创建额外的迭代器变量
- 遍历期间得到的是对象,没有索引位置信息,因此不能进行赋值操作。
- for
for特点:
- for需要获取容器大小,如果计算大小比较耗时,那么for循环效率会很低。
- for循环是根据容器的大小来防止越界,因此每次循环都需要进行一次比较。
- 效率比较:
由于for循环的特性,每次循环都会进行比较,所以效率上不如foreach。但这个结论不是绝对的,还要考虑一下几点:
1. 如果只是读数据,优先选择foreach;
2. 如果要写数据,即替换指定索引位置处的对象,就只能选择for。