A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张向辉 于 2013-1-26 16:56 编辑

public class Foreach {
/**
  * @param args
  */
public static void main(String[] args) {
  int[] arr = { 1, 3, 4, 6 };
  for (int i = 0; i < arr.length; i++) {
   // System.out.println(arr);
  }
  for (int arr1 : arr) {
   System.out.println(arr1);
  }
}
}
求大神讲解下,增强for和普通for有什么区别?都一样的,在这个点上迷惑了好久,求解释啊。

3 个回复

倒序浏览
//使用增强for需要注意的几个问题:增强for只适合取数据,不能改变
        //想改变数据,只能用传统的for来操作
        @Test
        public void test7(){
                int[] arr = {1,2,3};
                for(int i : arr){
                        i = 10;//只是定义了个局部i变量来接收数据
                }
               
                for(int i=0;i<arr.length;i++){
                        arr[i] = 10;
                }
                System.out.println(arr[0]);
                System.out.println(arr[1]);
                System.out.println(arr[2]);
               
                List list = new ArrayList();
                list.add(1);
               
                for(Object obj : list){
                        obj = "10";//改变指向而已
                }
                System.out.println(list.get(0));
        }

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9 赞一个!

查看全部评分

回复 使用道具 举报

普通for可以完成对语句执行很多次,因为可以定义控制循环的变量和条件。

增强for是一种简化形式,  他必须要有被遍历的目标,该目标要么是数组,要么是Collection单列集合。

对数组的遍历如果仅仅是获取数组中的元素,可以使用增强for
如果是对数组的角标进行操作,建议使用普通for.

评分

参与人数 1黑马币 +6 收起 理由
Rancho_Gump + 6 赞一个!

查看全部评分

回复 使用道具 举报
本来二个for的在遍历元素方面就是一样的,,,不过要改变数组元素的话。增强for不行。

增强for循环:是一种简化形式,它必须有遍历的目标,该目标要么是数组要么是collection中的单列集合。仅仅是为了获取数组中的元素可以使用高级for.

传统for循环:可以完成对循环执行多次,因为可以控制循环的增量和条件。对数组角标进行操作建议使用传统for.

另外:foreach不可以直接遍历map,因为map中存储的是键值对,但可以将map转成单列set,就可以用了。

评分

参与人数 1黑马币 +6 收起 理由
Rancho_Gump + 6 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马