增强for循环
增强for循环的目的:简化数组和Collection集合的遍历
背景:collection集合继承了Iterable接口。实现此Iterable接口允许对象成为增强型for语句(有时称为for-each loop语句)的目标。从JDK5版本之后才有 所以,collection体系的集合都可以成为增强型for语句的目标
增强型for语句的底层其实包装的是迭代器,即内部原理是一个Iterator迭代器
增强for的格式如下
xxxxxxxxxxfor(元素数据类型 变量名 : 数组或者collection集合) { //如果是数组的话,变量名的位置就换成数组名。如果是集合的话,就在变量名的位置写集合名称 //在此处使用变量即可,该变量就是元素}范例如下
xxxxxxxxxxint[] arr = {1,2,3,4,5};for(int i : arr) { System.out.println(i);}
增强for循环的练习
xxxxxxxxxxpackage 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循环的内部原理是迭代器
}}