package cn.itcast.day19.foreach; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.ListIterator; /* * JDK5的新特性:自动拆装箱,泛型,可变参数,增强for,静态导入,枚举 * * 增强for:是for循环的一种 * * 格式: * for(元素数据类型 变量:数组或者Collection集合){ * * } * *好处:简化了数组和Collection集合的遍历 * *弊端: * 1 增强for的目标不能为null * 解决:对增强for的目标先进行不为null的判断,然后再使用 * 2 无法在迭代过程中修改集合 * 解决:没辙 */ public class ForEachDemo { public static void main(String[] args) { String[] arr1=new String[]{"林青霞","风清扬","猪八戒","沙和尚"}; for(String s:arr1){ System.out.println(s); } System.out.println("---------"); Collection<String> arr2=new ArrayList<String>(); arr2.add("林青霞"); arr2.add("风清扬"); arr2.add("猪八戒"); arr2.add("沙和尚"); for(String s:arr2){ System.out.println(s); } System.out.println("---------"); //增强for其实就是迭代器 //迭代器迭代集合,正在迭代的过程中,集合操作集合元素ConcurrentModificationException // for(String s:arr2){ // if("林青霞".equals(s)){ // arr2.add("孙悟空"); // } // } //列表迭代器迭代集合,迭代器修改结合 List<String> arr3=(List<String>)arr2; ListIterator<String> it=arr3.listIterator(); while(it.hasNext()){ String s=it.next(); if("林青霞".equals(s)){ it.add("周杰伦 "); } } System.out.println("arr3: "+arr3); System.out.println("---------"); List<String> list=null; //对增强for的目标先进行不为null的判断,然后再使用 if(list!=null){ //s是从list中拿出来的,在拿之前肯定会判断list是否有元素,而这时list=null,报空指针 for(String s:list){ System.out.println(s); } } } }