增强for循环(for each循环)是JDk1.5之后的一个高循环,专门用来遍历数组和集合的,所有的数组跟单列集合都可以使用。它的内部原理就是一个迭代器Iterator,所以在遍历过程中,不能对集合元素进行增删操作。
语法:
for(类型 变量 : 数组/集合){// 数组或者集合里的每一项赋值给这个变量// 循环体
}
【参考代码】
String[] student = {"小明","小红","小蓝"};// // 传统遍历方式
// for (int i = 0; i < student.length; i++) {
// System.out.println(student[i]);
// }
// 增强for
for(String c : student){
System.out.println(c);
}
--------------------------------
List<Integer>list = new ArrayList<Integer>();
list.add(123);
list.add(234);
list.add(456);
for(Integer n : list){
System.out.println(n);
}
注:增强for必须有被遍历的目标。目标只能是数组或者Collection,而它仅仅作为遍历操作实现
2.4迭代器注意事项
迭代器是一次性对象。我们不能重置迭代器,它不能被重用。
要再次遍历同一集合的元素,请通过调用集合的iterator()方法来创建一个新的Iterator。
三:泛型 3.1泛型概述在前面学习集合时,我们知道集合时可以存放任意对象的,只要把对象存储集合后,它们都会被向上转型提升为Object类型。当我们要取出这些对象时必须进行类型强制转换,由Object类型变为原来的类型。
3.2泛型的优缺点不使用泛型:
- 好处:集合默认类型是Object类,可以存储任意类型的数据- 弊端:不安全,会引发异常,需要强转。 public static void main(String[] args) {
List list = new ArrayList();
list.add("小明");
list.add("小红");
for (int i = 0; i < list.size(); i++) {
String s= (String)list.get(i) // 强转
System.out.println(s);
}
}
使用泛型:
好处:避免了类型强制转化的麻烦,存的什么类型,取出来的也是什么类型;代码运行之后才会抛出异常,写代码时不会报错