Java开发之道
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

细节7 集合杀手——新增的for…each循环

从JDK 1.5开始,Java API新增了for…each循环,可以方便快速地遍历数组和集合中的元素,for…each并不是循环的关键字,使用for…each循环时不需要循环条件,系统会自动遍历数组或集合中的每个元素,当每个元素都遍历一次后,结束for…each循环的执行,其语法格式如下:

    for (datatype var : array){
      // 循环体
    }

说明

上面语法中的for 是循环的关键字,datatype 是数组或集合中元素的数据类型,var 是datatype类型的循环变量,array是要对其进行遍历的数组或集合对象。

示例:

    String[] name = {"小明", "小强", "小丽", "小红"};
    for (String value : name){          // 使用for…each循环遍历数组name
      System. out. println (value);        // 输出数组中的元素值
    }

上面的代码首先创建一个String类型的数组name,该数组有4个元素分别是“小明”,“小强”, “小丽”和“小红”,当程序执行到for…each循环时,系统会自动将数组name中的每个元素依次赋值给循环变量value,即先将“小明”赋值给循环变量value,然后执行循环体,再将“小强”赋值给循环变量value,然后再执行循环体,直到将数组中的每个元素都遍历一次为止,程序结束for…each循环。

注意

在程序中使用for…each循环时,不能通过循环变量来改变数组或集合中的元素值,否则会导致错误的结果。

示例:

    String[] name = {"小明", "小强", "小丽"};
    for (String value : name){          // 使用for…each循环遍历数组name
      value = "小亮";
    }
    System. out. println (name[1]);        // 输出下标是1的数组元素的值

运行本示例,程序将输出如下内容:

    小强

说明

本示例之所以输出数组name的元素name[1]的值为“小强”,是由于在for…each循环中,不能通过循环变量来改变数组中的元素值,所以程序输出数组元素name[1]的值是“小强”而不是“小亮”。