增强for循环
增强for循环的目的:简化数组和Collection集合的遍历
背景:collection集合继承了Iterable接口。实现此Iterable接口允许对象成为增强型for语句(有时称为for-each loop语句)的目标。从JDK5版本之后才有 所以,collection体系的集合都可以成为增强型for语句的目标
增强型for语句的底层其实包装的是迭代器,即内部原理是一个Iterator迭代器
增强for的格式如下
xxxxxxxxxx
for(元素数据类型 变量名 : 数组或者collection集合) { //如果是数组的话,变量名的位置就换成数组名。如果是集合的话,就在变量名的位置写集合名称
//在此处使用变量即可,该变量就是元素
}
范例如下
xxxxxxxxxx
int[] arr = {1,2,3,4,5};
for(int i : arr) {
System.out.println(i);
}
增强for循环的练习
xxxxxxxxxx
package ch14;
import java.util.ArrayList;
import java.util.List;
public class a_11_1测试 {
public static void main(String[] args) {
//定义int类型的数组
int[] arr = {1,2,3,4,5};
//使用增强for遍历
for(int i : arr){
System.out.println(i);
}
System.out.println("----------------");
//----------------------------------------------------------------------------------------------------------------
//定义String类型的数组
String[] strArray = {"hello","world","java"};
//使用增强for遍历
for(String s : strArray){
System.out.println(s);
}
System.out.println("----------------");
//----------------------------------------------------------------------------------------------------------------
//定义泛型为String的集合
List<String> list = new ArrayList<String>();
list.add("hello2");
list.add("world2");
list.add("java2");
//使用增强for遍历。对于集合的遍历可以用迭代器、普通for循环、增强for循环,这里使用的是增强for循环
for(String s : list) {
System.out.println(s);
}
System.out.println("----------------");
//----------------------------------------------------------------------------------------------------------------
//验证增强for循环的内部原理,是不是Iterator迭代器
for(String s : list) { //如果for循环的内部原理是迭代器,那么这行就相当于迭代器遍历集合
if(s.equals("world2")){ //判断集合有没有"world"元素
list.add("我是新增的"); //如果有,就通过集合调用add方法。此时就会抛出并发修改异常,也就是前面几节课学的
}
}
//即如果控制台抛出并发修改异常,就证明for循环的内部原理是迭代器
//很显然,控制台报错了ConcurrentModificationException,就是并发修改异常,即验证了for循环的内部原理是迭代器
}
}