增强for的优点与缺点
优点:简化了数组或集合遍历的迭代写法,foreach遍历在写法上显得更加的简洁和方便;
缺点:增强for无法知道当前已经遍历到了数组的哪个索引位置处,即无法直接获取索引下标;
使用增强for的场景:进行不关注索引下标的数组或集合迭代;
增强for的底层实现原理
首先使用IntelliJ IDEA软件的反编译功能对上述的案例的class文件进行反编译,反编译后的案例代码如下:
先来关注数组的增强for循环的底层原理,从下图反编译出的源码可以看出,对数组进行增强for遍历其实底层实现就是运用了普通数组遍历是采用的带索引下标的迭代(遍历):
再来看看对集合使用增强for遍历时其底层实现方式,从下图中可以直观清晰的看出对集合使用增强for遍历就是获取该集合迭代器完成迭代操作,其原理就是获取迭代器(Iterator)对集合元素进行迭代操作: