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循环更为灵活。

posted @ 2022-08-09 22:26  做个读书人  阅读(372)  评论(0编辑  收藏  举报