迭代器方法数组也能使用吗?

今天学习的时候发现用增强for循环能对数组进行遍历,可是增强for循环底层不是基于迭代器实现的吗?我查了文档没看到array实现iterable接口啊,请各位前辈指教

你可以理解为对于数组,foreach 循环实际上还是用的普通的 for 循环。对于集合,foreach 循环实际上是用的 iterator 迭代器迭代。

假设创建一个ArrayList列表,再去实现Iterator接口,实现前记得先导Iterator包,可以参考下面我刚写的代码,希望能帮到你


package 测试1;

import java.util.ArrayList;
import java.util.Iterator;

public class 测试 {
    public static void main(String[] args) {
        ArrayList <Integer>al=new ArrayList<Integer>();
        int i;
        for(i=0;i<5;i++)
        al.add(i);
        Iterator <Integer>it=al.iterator();
        while(it.hasNext()) {
            System.out.println(it.next()+" ");
        }
    }
}

貌似在处理for循环的时候数组作为特例来处理了
参考

Chapter 14. Blocks and Statements https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.14.2

摘要:
for循环的处理方式
for (Iterator #i = l.iterator(); #i.hasNext(); ) {
float #i0 = (Integer)#i.next();
...

数组的处理方式
for (int #i = 0; #i < #a.length; #i++) {
{VariableModifier} TargetType Identifier = #a[#i];
Statement
}