黑马程序员技术交流社区

标题: Foreach增强for的一个疑问,求大神解答 [打印本页]

作者: 黑马-小龙    时间: 2013-1-25 22:28
标题: Foreach增强for的一个疑问,求大神解答
本帖最后由 张向辉 于 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有什么区别?都一样的,在这个点上迷惑了好久,求解释啊。

作者: 黄锦成    时间: 2013-1-25 22:56
//使用增强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));
        }
作者: 李光耀    时间: 2013-1-25 23:05

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

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

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

作者: 王溢君    时间: 2013-1-25 23:33
本来二个for的在遍历元素方面就是一样的,,,不过要改变数组元素的话。增强for不行。

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

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2