JDK5的新特性:自动拆装箱,泛型,增强for,静态导入,可变参数,枚举
增强for:是for循环的一种。
格式:
for(元素数据类型 变量 : 数组或者Collection集合) {
使用变量即可,该变量就是元素
}
好处:简化了数组和集合的遍历。
弊端: 增强for的目标不能为null。
如何解决呢?对增强for的目标先进行不为null的判断,然后在使用。
1 import java.util.ArrayList; 2 import java.util.Collection; 3 import java.util.List; 4 public class ForDemo { 5 6 public static void main(String[] args) { 7 //int数组的遍历 8 int[] arr = {11,22,33,44,55,66,77}; 9 for(int i : arr){ 10 System.out.println(i); 11 } 12 System.out.println("---------"); 13 14 //String数组的遍历 15 String[] str = {"阿猫","阿狗","花花","草草"}; 16 for(String s : str){ 17 System.out.println(s); 18 } 19 System.out.println("---------"); 20 21 //Collection集合的遍历 22 Collection<Integer> c = new ArrayList<Integer>(); 23 c.add(2008); 24 c.add(2012); 25 c.add(2016); 26 for(Integer i : c){ 27 System.out.println(i); 28 } 29 System.out.println("---------"); 30 31 //ArrayList集合的遍历 32 ArrayList<String> s = new ArrayList<String>(); 33 s.add("java"); 34 s.add("javaee"); 35 s.add("javase"); 36 s.add("Android"); 37 for(String ss : s){ 38 System.out.println(ss); 39 } 40 System.out.println("---------"); 41 42 //但是,当遍历的是一个空集合呢? 43 List<Double> l = null; //大写的Double才是引用类型 44 //NullPointerException 45 // 这个d是我们从list里面获取出来的,在获取前,它肯定还好做一个判断 46 // 说白了,这就是迭代器的功能 47 //解决方法:给它加个进入语句的条件 48 if(l != null){ 49 for(Double d : l){ 50 System.out.println(d); 51 } 52 } 53 54 // 增强for其实是用来替代迭代器的 55 //ConcurrentModificationException 56 for(String s1 : s){ 57 if("Android".equals(s1)){ 58 s.add("IOS"); 59 } 60 System.out.println(s1); 61 } 62 63 } 64 }
ArrayList存储字符串并遍历。要求加入泛型,并用增强for遍历。
目前掌握了3种遍历方法:
A:迭代器
B:普通for
C:增强for
1 import java.util.ArrayList; 2 import java.util.Iterator; 3 public class ArrListDemo { 4 5 public static void main(String[] args) { 6 //创建ArrayList集合 7 ArrayList<String> list = new ArrayList<String>(); 8 //给集合添加元素 9 list.add("java"); 10 list.add("javaee"); 11 list.add("javase"); 12 list.add("Android"); 13 14 //第一种遍历方法:迭代器 15 Iterator<String> it = list.iterator(); 16 while(it.hasNext()){ 17 String s = it.next(); 18 System.out.println(s); 19 } 20 System.out.println("-------"); 21 22 //第二种遍历方法:普通for 23 for(int x = 0; x < list.size(); x++){ 24 String s1 = list.get(x); 25 System.out.println(s1); 26 } 27 System.out.println("-------"); 28 29 //第三种遍历方法:增强for 30 for(String s2 : list){ 31 System.out.println(s2); 32 } 33 } 34 35 }