JDK5的新特性:自动拆装箱,泛型,增强for,静态导入,可变参数,枚举
增强for:是for循环的一种。
格式:
for(元素数据类型 变量 : 数组或者Collection集合) {
使用变量即可,该变量就是元素
}
好处:简化了数组和集合的遍历。
弊端: 增强for的目标不能为null。
如何解决呢?对增强for的目标先进行不为null的判断,然后在使用。
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class ForDemo { public static void main(String[] args) {
//int数组的遍历
int[] arr = {11,22,33,44,55,66,77};
for(int i : arr){
System.out.println(i);
}
System.out.println("---------"); //String数组的遍历
String[] str = {"阿猫","阿狗","花花","草草"};
for(String s : str){
System.out.println(s);
}
System.out.println("---------"); //Collection集合的遍历
Collection<Integer> c = new ArrayList<Integer>();
c.add(2008);
c.add(2012);
c.add(2016);
for(Integer i : c){
System.out.println(i);
}
System.out.println("---------"); //ArrayList集合的遍历
ArrayList<String> s = new ArrayList<String>();
s.add("java");
s.add("javaee");
s.add("javase");
s.add("Android");
for(String ss : s){
System.out.println(ss);
}
System.out.println("---------"); //但是,当遍历的是一个空集合呢?
List<Double> l = null; //大写的Double才是引用类型
//NullPointerException
// 这个d是我们从list里面获取出来的,在获取前,它肯定还好做一个判断
// 说白了,这就是迭代器的功能
//解决方法:给它加个进入语句的条件
if(l != null){
for(Double d : l){
System.out.println(d);
}
} // 增强for其实是用来替代迭代器的
//ConcurrentModificationException
for(String s1 : s){
if("Android".equals(s1)){
s.add("IOS");
}
System.out.println(s1);
} }
}
ArrayList存储字符串并遍历。要求加入泛型,并用增强for遍历。
目前掌握了3种遍历方法:
A:迭代器
B:普通for
C:增强for
import java.util.ArrayList;
import java.util.Iterator;
public class ArrListDemo { public static void main(String[] args) {
//创建ArrayList集合
ArrayList<String> list = new ArrayList<String>();
//给集合添加元素
list.add("java");
list.add("javaee");
list.add("javase");
list.add("Android"); //第一种遍历方法:迭代器
Iterator<String> it = list.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
System.out.println("-------"); //第二种遍历方法:普通for
for(int x = 0; x < list.size(); x++){
String s1 = list.get(x);
System.out.println(s1);
}
System.out.println("-------"); //第三种遍历方法:增强for
for(String s2 : list){
System.out.println(s2);
}
} }