Java核心技术卷I基础知识(原书第9版)
上QQ阅读APP看书,第一时间看更新

3.10.1 for each循环

Java有一种功能很强的循环结构,可以用来依次处理数组中的每个元素(其他类型的元素集合亦可)而不必为指定下标值而分心。

这种增强的for循环的语句格式为:

定义一个变量用于暂存集合中的每一个元素,并执行相应的语句(当然,也可以是语句块)。collection这一集合表达式必须是一个数组或者是一个实现了Iterable接口的类对象(例如ArrayList)。有关数组列表的内容将在第5章中讨论,有关Iterable接口的内容将在卷II的第2章中讨论。

例如,

打印数组a的每一个元素,一个元素占一行。

这个循环应该读作“循环a中的每一个元素”(for each element in a)。Java语言的设计者认为应该使用诸如foreach、in这样的关键字,但这种循环语句并不是最初就包含在Java语言中的,而是后来添加进去的,并且没有人打算废除已经包含同名(例如System.in)方法或变量的旧代码。

当然,使用传统的for循环也可以获得同样的效果:

但是,for each循环语句显得更加简洁、更不易出错(不必为下标的起始值和终止值而操心)。

注释:for each循环语句的循环变量将会遍历数组中的每个元素,而不需要使用下标值。

如果需要处理一个集合中的所有元素,for each循环语句对传统循环语句所进行的改进更是叫人称赞不已。然而,在很多场合下,还是需要使用传统的for循环。例如,如果不希望遍历集合中的每个元素,或者在循环内部需要使用下标值等。

提示:有个更加简单的方式打印数组中的所有值,即利用Arrays类的toString方法。调用Arrays.toString(a),返回一个包含数组元素的字符串,这些元素被放置在括号内,并用逗号分隔,例如,“[2,3,5,7,11,13]”。要想打印数组,可以调用