
4.1.5 使用foreach遍历数组
除了使用for循环遍历数组外,Java中还有另外一种更简洁的遍历方法:foreach循环遍历。这种方式也称为增强for循环,它的功能比较强大,遍历时不需要依赖数组的长度和下标,即可实现数组遍历。foreach循环的语法格式如下:
for (数组中元素的类型 临时变量 : 数组对象变量) { 程序语句; }
通过上面的语法结构可以看出,foreach循环遍历数组时不需要获取数组长度,也不需要用索引去访问数组中的元素,这是与for循环不同的地方。foreach循环会自动将数组中的元素逐一取出,存入一个临时变量中,然后使用临时变量进行数据处理,从而完成数组元素的遍历。
接下来,通过案例来演示foreach循环遍历数组,如例4-3所示。
【例4-3】 Demo0403.java

程序的运行结果如下:
唐僧 孙悟空 猪八戒 沙和尚
例4-3中,首先定义了一个数组对象,并初始化了4个字符串数据。然后使用foreach循环遍历数组,每次循环时foreach都通过临时变量存储当前遍历到的元素,并将元素输出。
注意:foreach循环代码简洁,编写方便,但是有其局限性,当使用foreach循环遍历数组时,只能访问其中的元素,不能对元素进行修改。
接下来,通过案例进一步演示在使用foreach循环遍历数组的过程中,对元素进行修改会有什么结果,如例4-4所示。
【例4-4】 Demo0404.java

程序的运行结果如下:
null null null
例4-4中,先定义了一个长度为3的字符串数组。然后通过第1个foreach循环将遍历到的每个数组元素的数据都进行了修改。但在第2个foreach循环中,遍历输出的每个元素依旧是null。这说明在使用foreach循环遍历数组时,遍历的元素并没有真正被修改。原因是第8行中只是将临时变量str指向了一个新字符串,变量str和数组中的元素实际上没有任何联系。所以,foreach循环遍历数组的过程中无法修改所遍历的数据。因此,foreach并不能替代for循环,仅仅是让遍历的方法变得更简洁。