int [] array = {1,2,3};
for(int i : array){
System.out.println(i);
}
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
for(Object obj : list){
System.out.println(obj);
}
对于上面一段代码,编译后的Class文件如下:
int[] array = new int[]{1, 2, 3};
int[] var2 = array;
int var3 = array.length;
for(int var4 = 0; var4 < var3; ++var4) {
int i = var2[var4];
System.out.println(i);
}
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
Iterator var7 = list.iterator();
while(var7.hasNext()) {
Object obj = var7.next();
System.out.println(obj);
}
可以看出:
1、对于数组,foreach 循环实际上还是用的普通的 for 循环
2、对于集合,foreach 循环实际上是用的 iterator 迭代器迭代
A:foreach适用于只是进行集合或数组遍历,foreach适用于循环次数未知,或者计算循环次数比较麻烦情况下使用效率更高,for则在较复杂的循环中效率更高。
B:foreach不能对数组或集合进行修改(添加删除操作),如果想要修改就要用for循环。所以相比较下来for循环更为灵活。
唯有热爱方能抵御岁月漫长。