一、用途
只能用于简单遍历并读取数组(数组)的内容
二、缺点
- 对数组,不能方便的访问下标值
- 对集合,与使用Interator(迭代器)相比,不能方便的删除集合中的内容
三、实例
-
语法
//对数组 for (Type value : array) { expression value; } //对集合 for (Type value : 集合) { expression value; }
-
遍历数组
原始:
void someFunction () { int[] array = {1,2,5,8,9}; int total = 0; for (int i = 0; i < array.length; i++) total += array[i]; System.out.println(total); }
使用增强型for循环:
void someFunction () { int[] array = {1,2,5,8,9}; int total = 0; for (int n : array) { total += n; } System.out.println(total); }
缺点:
-
只能顺次遍历所有元素,无法实现较为复杂的循环,如在某些条件下需要后退到之前遍历过的某个元素;
-
循环变量(i)不可见,如果想知道当前遍历到数组的第几个元素,只能这样写:
int i = 0; for (int n : array) { System.out.println("This " + i + "-th element in the array is " + n); i++; }
-
-
遍历集合
原始
void someFunction () { List list = new ArrayList(); list.add("Hello "); list.add("Java "); list.add("World!"); String s = ""; for (Iterator iter = list.iterator(); iter.hasNext();) { String temp= (String) iter.next();//强制类型转换 s += temp; } System.out.println(s); }
使用增强型for循环:
void someFunction () { List list = new ArrayList(); list.add("Hello "); list.add("Java "); list.add("World!"); String s = ""; for (Object o : list) { String temp = (String) o; s += temp; } System.out.println(s); }
结合"泛型"
void someFunction () { List list = new ArrayList(); list.add("Hello "); list.add("Java "); list.add("World!"); String s = ""; for (String temp : list)//这里已经进行了强制类型转换 { s += temp; //省去了对强制类型转换步骤 } System.out.println(s); }
-
总结:
综上所述,Java 5.0中提供的增强的for循环——for/in(for each)循环能让我们的代码更加简洁,让程序员使用时更加方便,但是也有它的局限性,所以一定要根据实际需要有选择性地使用,不要盲目追求所谓的“新特性”。
来自:参考资料