foreach和for循环对比
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循环更为灵活。
唯有热爱方能抵御岁月漫长。