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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张腾达 中级黑马   /  2012-7-28 21:02  /  3255 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张腾达 于 2012-7-30 09:09 编辑

请问for循环和foreach循环的异同,两种循环分别适用于什么情况呢

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

7 个回复

倒序浏览
for 你先要给初始值,还有就是简单的循环不负责取值

foreach 不需要事先给定初始值,他能自动遍历出的集合体的所有值,

for:常用于简单的循环;foreach:遍历一些集合的数据的时候会常用到

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
区别:
只能for循环不但可以从数组中读取元素,而且可以重新为数组的元素进行赋值,交换或者删除等操作。而foreach只能从数组中读取元素而不能重新赋值。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
个人理解:
for必须知道长度才可以遍历
而foreach在不知道长度的情况下也可以遍历

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
for 你先要给初值,末值和步长
foreach 不需要事先给定初值,末值和步长,他是自动遍历给定的集合体的所有值
foreach 是只读的在循环体内不能对元素进行赋值操作

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
哈哈,给你举个例子吧:
class Demo2
{
        public static void main(String[] args)
        {
                int array[]={1,2,3,4,45,5,6,7};
                System.out.println("用foreach循环输出:");
                for(int a:array)System.out.print(a+" ");
                System.out.println("\n用for循环输出:");
                for(int i=0;i<array.length;i++){
                        System.out.print(array[i]+" ");
                }
        }
}
其实都挺好用的,到时得看你在什么情况下用.根据不同的情况用不同的方法.如果是单层循环用foreach比较方便,如果是多层循环要用for循环了.

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 黑马杨凯 于 2012-7-29 00:23 编辑

for循环的适用范围更广,更灵活,foreach循环用于遍历集合,要支持foreach循环,需要实现迭代器,要迭代一个类,使用方法GetEnumerator(),返回值为IEnumerator;要迭代一个方法使用IEnumerable。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
foreach的效率比for的高,在foreach循环中,直接在一个集合里去数据,,无需判断下标等。另外,在使用foreach的时候要注意的是:在遍历集合的时候,不能对集合进行真删操作。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

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