一、for-each循环概述
for-each循环是Java SE5及以上版本中新增的一种for循环语句,也被称为增强型for循环或者foreach循环。
for-each循环通过简化代码结构,使得数组、集合等集合类容易被遍历。
for(元素类型 元素变量名: 遍历对象){
循环体代码
}
其中,元素类型是要遍历的对象的数据类型;元素变量名是遍历过程中元素的引用,不需要在循环之前声明;遍历对象可以是数组、集合等实现了Iterable接口的集合类。
二、遍历数组
for-each循环可以方便地遍历数组中的所有元素,代码如下:
public class ForEachDemo{ public static void main(String[] args){ int[] numArray = {1, 2, 3, 4, 5}; for (int num : numArray){ System.out.println(num); } } }
运行结果如下:
1 2 3 4 5
该例中,对数组numArray进行遍历操作,将每个元素不断赋值给循环中的变量num,再输出变量num中的值。
三、遍历集合
for-each循环同样可以遍历集合类,如List、Set等,代码如下:
import java.util.ArrayList; import java.util.List; public class ForEachDemo{ public static void main(String[] args){ List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("orange"); for (String str : list){ System.out.println(str); } } }
运行结果如下:
apple banana orange
该例中,对List集合进行遍历操作,将每个元素不断赋值给循环中的变量str,再输出变量str中的值。
四、遍历二维数组
for-each循环同样可以遍历二维数组,代码如下:
public class ForEachDemo{ public static void main(String[] args){ int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; for (int[] row : matrix){ for (int num : row){ System.out.print(num + " "); } System.out.println(); } } }
运行结果如下:
1 2 3 4 5 6 7 8 9
该例中,遍历二维数组matrix,将每个一维数组赋值给循环中的变量row,并再通过for-each循环遍历输出该一维数组中的值num。
五、for-each循环的注意事项
1. for-each循环不支持在遍历过程中修改遍历对象中的元素。
例如,下面的示例中,不能用for-each循环遍历列表中的元素,并通过删除列表中的元素来改变列表的大小。
List<String> list = new ArrayList<>(); for (String str : list){ list.remove(str); }
2. for-each循环要求遍历对象必须实现了Iterable接口,且Iterable接口中定义了iterator()方法,否则编译时会出错。
3. 对于遍历过程中未使用的元素,可以使用下划线代替,如下所示:
int[] numArray = {1, 2, 3}; for (int _ : numArray){ System.out.println("Hello"); }
运行结果如下:
Hello Hello Hello
六、总结
for-each循环是一种简洁、易用的遍历语句,可以遍历数组、集合等Iterable实现类对象。在编写Java代码时,使用for-each循环可使代码更加简洁、清晰。