书写格式:
for (循环变量类型 循环变量名称 : 要被遍历的对象) {
循环体
}
或者
for(集合或者数组中的数据类型 变量名:集合或者数组的对象名){
输出变量名;
}
增强for循环感觉类似迭代器,顺着数据遍历一次,大部分情况下可以取代迭代器。
//定义一个数组,静态初始化
int[] arr = {11,22,33,44,55} ;
//使用增强for遍历
for(int i :arr){
System.out.println(i);
}
System.out.println("-------------------");
1.arr就是为 要被遍历的对象,可以是数组,集合
2.循环变量类型就是这个arr数组的数据类型,即int
3.循环变量名称,这个可以自己定义。在嵌套遍历中,最好使用望文生义的名字,方便使用
注:对象名不是能是空值,否则会报异常,空指针异常。所以在有一条编程原则就是,对对象要做非空判断,防止出现空指针异常。
嵌套遍历(集合的)
最内层是*类构建的元素,元素放置在一个小集合里,而小集合又是大集合中元素,形成一个双层的嵌套。
例:学生A,B,C分别在高一1,2,3班。1、2、3班级是小集合,学生是*类构建的元素。1、2、3班又在高一这个大集合中,每个班是大集合的元素,方便理解。
测试类:
package Day14_Nested_EnhanceFor;
import java.util.ArrayList;
/**
* @author Aoman_Hao
*/
public class MainTest {
public static void main(String[] args) {
//创建大集合对象
ArrayList<ArrayList<Star>> ARR = new ArrayList<ArrayList<Star>>();
//创建Arraylist集合对象
ArrayList<Star> array = new ArrayList<Star>();
//创建Star类对象
Star s1 = new Star("刘诗诗", 22, "女");
Star s2 = new Star("大个", 23, "男");
Star s3 = new Star("李诗诗", 26, "女");
Star s4 = new Star("王丽", 24, "男");
Star s5 = new Star("A诗诗", 22, "女");
array.add(s1);
array.add(s2);
array.add(s3);
array.add(s4);
array.add(s5);
ARR.add(array);
System.out.println("姓名\t年龄\t性别");
//增强for循环遍历
for(ArrayList<Star> ar : ARR ){
for(Star st:array){
System.out.println(st.getName()+"\t"+st.getAge()+"\t"+st.getGender());
}
}
}
}
对象类:
package Day14_Nested_EnhanceFor;
/**
* @author Aoman_Hao
*/
public class Star {
private String name;
private int age;
private String gender;
public Star() {
super();
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
}
public int getAge() {
return age;
}
public void setAge(int age) {
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
}
public Star(String name, int age, String gender) {
super();
this.name = name;
this.age = age;
this.gender = gender;
}
}
输出:
姓名 年龄 性别
刘诗诗 22 女
大个 23 男
李诗诗 26 女
王丽 24 男
A诗诗 22 女
增强for循环(For-Each)循环的缺点:丢掉了索引信息。
当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息。