JDK1.5中增加了增强的for循环。

缺点:
  对于数组,不能方便的访问下标值;
  对于集合,与使用Iterator相比,不能方便的删除集合中的内容(在内部也是调用Iterator).
除了简单遍历并读取其中的内容外,不建议使用增强的for循环。

一、遍历数组

语法为:

for (Type value : array) {
  
}
//以前我们这样写:
void someFunction ()
{
  
  
  
  
      
   
  
}
//现在我们只需这样写(和以上写法是等价的):
void someFunction ()
{
  
  
  
  {  
     
  
  
}

这种写法的缺点:

显而易见,for/in(for each)循环自动控制一次遍历数组中的每一个元素,然后将它赋值给一个临时变量(如上述代码中的int n),然后在循环体中可直接对此临时变量进行操作。这种循环的缺点是:

1. 只能顺次遍历所有元素,无法实现较为复杂的循环,如在某些条件下需要后退到之前遍历过的某个元素;

2. 循环变量(i)不可见,如果想知道当前遍历到数组的第几个元素,只能这样写:

int i = 0;
for (int n : array) {
    System.out.println("This " + i + "-th element in the array is " + n);
   
}

二、遍历集合

语法为:

for (Type value : Iterable) {
  
}

注意:for/in循环遍历的集合必须是实现Iterable接口的。

//以前我们这样写:
void someFunction ()
{
  
   list.add("Hello ");
  
  
  
  
 
     
     
  
  
}
//现在我们这样写:
void someFunction ()
{
  
  
  
  
  
  
 
     
     
 
 
}
// 如果结合“泛型”,那么写法会更简单,如下:
void someFunction ()
{
  
  
  
  
  
  
  {
     
 
 
}
//上述代码会被编译器转化为:
void someFunction ()
{
  
  
  
  
  
  
 
     
     
  
  
}

这种写法的缺点: