Java SE 5.0新增了for-each的语法,又称强化的for循环(Enhanced for Loop),应用于数组的依次存取。for-each循环的语法如下:
for (ElementType element : arrayName) {}
解释一下,冒号前面是声明一个临时变量,将在该foreach的代码段中进行引用;冒号后面是表达式,应该为集合或者数组。注意,临时变量element的类型ElementType必须与数组(或集合)元素的数据类型相同。
运行AccessArrayWithForEach.java(范例5-11),学习for-each循环的用法。
程序清单5-11:AccessArrayWithForEach.java |
public class AccessArrayWithForEach { public static void main(String[] args) { String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "July", "Aug", "Sep", "Oct", "Nov", "Dec"};
// Shortcut syntax loops through array months and assigns the next // element to variable month for each pass through the loop for(String month: months) { System.out.println("month: " + month); } } } |
AccessArrayWithForEach.java中,每一次从数组months中取出的元素,会自动设定给month,不再需要判断是否超出了数组的长度。与AccessArrayWithForLoop.java(范例5-2)相比较,For-each的形式实现数组中的元素的依次存取,比for循环的代码简洁不少。但是这种形式的一个最大的缺点就是for-each没法定位访问单个元素,也就没办法修改,删除集合中的内容; 同时,for-each也不能并行操作多个集合。所以,在编写代码时,还得看情况使用它。
二维数组如何使用for-each的方式来存取呢?要是了解数组本身就是一个对象,自然就会知道如何存取。举个例子:
int[][] arr = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
For-each形式的数组存取代码如下:
for ( int[] row : arr ) {
for ( int element : row ) {
System.out.println(element);
}
}