在平时Java程序中,应用比较多的就是对Collection集合类的foreach遍历,foreach之所以能工作,是因为这些集合类都实现了Iterable接口,该接口中定义了Iterator迭代器的产生方法,并且foreach就是通过Iterable接口在序列中进行移动。
Iterable接口API:
package java.lang;
import java.util.Iterator;
public interface Iterable
{
public abstract Iterator iterator();
}
该接口中定义了产生Iterator迭代器的方法;
package java.util;
public interface Iterator
{
public abstract boolean hasNext();
public abstract Object next();
public abstract void remove();
}
新形式的遍历虽然好用,但是他丢掉了索引信息。当你需要访问数组或者集合的下标,你将不能使用foreach
从JDK的第五个版本开始加入了这个foreach功能,但是java语言对于它的实现做了隐藏,他是隐藏在语言内部的
foreach循环的几个特性
1.foreach遍历不能对元素进行赋值操作
2.同时只能遍历一个
3.遍历的时候,只有当前被遍历的元素可见,其他不可见
4.只能正向遍历,不能反向
5.foreach对ArrayList的遍历是因为其实现了Iterable接口
6.对于数组,就是转化为对数组中的每一个元素的循环引用