黑马程序员技术交流社区

标题: foreach是怎么用的? [打印本页]

作者: mosuge7    时间: 2013-5-7 14:20
标题: foreach是怎么用的?
本帖最后由 mosuge7 于 2013-5-7 19:28 编辑

foreach和for有啥区别?举例说明下哈。
作者: zms2100    时间: 2013-5-7 14:43
本帖最后由 zms2100 于 2013-5-7 14:46 编辑

这个...............前者是高级for循环(应用于集合或数组,但要求遍历的对象是明确的,比如一个数组已经装满了元素),这个高级for循环是基于迭代器产生的(应该是在集合的迭代器章节也会讲它们的区别)。
for语句: 称呼做一般for循环,用来遍历数组或实现一些重复的操作。举例的话 :  比如遍历已有的数组int[] i = {2,4,6,3,56,1,5};
高级for循环:  for(int x : i ){   System.out.println( x );   }      //每次打印一个数组中的元素。
一般for循环:  for(int y = 0; y<i.length;y++){   System.out.println( i[y] );   }          //也是打印一个元素,不过是用获取对应数组角标的方法实现。
区别:   高级for不能实现的, 遍历对象不明确: int[] i = new int[5];  (给数组添加元素,加入5个 1 等)。
一般for :  for(int y = 0; y<i.length; y++){   
    i[y] = 1;
     System.out.println(  i[y] );   }               
//就是这个操作对象本来还没确定,高级for循环就不能实现(因为跟迭代器类似,它们遍历或操作的原理是要取出元素,连元素都没有,就.............O(∩_∩)O~)
作者: 高文咪    时间: 2013-5-7 15:09
我一般都是前台方法中用for循环;后台程序中实例有多个对象返回时的那种list形式用foreach循环;希望可以帮到你!
作者: 郎吉祥    时间: 2013-5-7 16:24
就我现在知道的,c#中
第一点,for循环的时候,可以知道循环了几次,比如for(int  i=0;……;i++)。而foreach遍历string类型的时候是不知道的,,foreach(string str in 数组名),必须自己建个变量来检测,在循环体中加个“变量++;”这在必须知道循环次数的时候for循环相对好一点。
第二点:遍历的时候,foreach比for简单。 而且不需要知道具体多少个元素。
List<string> list = new List<string>();
           list.Add("asf");
            list.Add("bug");
            list.Add("wer");
            foreach(string str in list)
            {

                Console.WriteLine(str);
        }
第三点、在数据库中传文本文件时,用foreach相当方便。再循环中,可以把每行拆成一个数组,我表达能力有限,就举个例子比如
//现在假设list是一个多行字符串的数组
            foreach(string str in list)
            {
                string[] segs=str.Split('这里为分隔符');
                string str1=segs[0];
                string str2=segs[1];
                string str3=segs[2];
               
        }
总结来说的话,遍历的时候用foreach,不遍历的时候用for
作者: mosuge7    时间: 2013-5-7 19:24
zms2100 发表于 2013-5-7 14:43
这个...............前者是高级for循环(应用于集合或数组,但要求遍历的对象是明确的,比如一个数组已经装 ...

你写的有的不是很理解,希望以后我能理解,非常感谢!
作者: mosuge7    时间: 2013-5-7 19:25
郎吉祥 发表于 2013-5-7 16:24
就我现在知道的,c#中
第一点,for循环的时候,可以知道循环了几次,比如for(int  i=0;……;i++)。而fo ...

嗯嗯,非常感谢!我懂了。
作者: mosuge7    时间: 2013-5-7 19:27
高文咪 发表于 2013-5-7 15:09
我一般都是前台方法中用for循环;后台程序中实例有多个对象返回时的那种list形式用foreach循环;希望可以帮 ...

     谢谢!:)




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