JDK5的新特性之 增强for

 

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);
        }
        }
        
    }

}

你可能感兴趣的:(jdk)