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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

昨天  看到毕老师讲的视频  说foreach循环,java从1.5以后开始支持,那么是不是所有的对象都可以使用foreach循环呢?在使用的时候对象应当符合什么条件呢?难道只有数组或者实现了Iterable接口的类实例?还有没有其他的什么情况?

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
记得就只有数组或者实现了Iterable接口的类。foreach循环必须要有被遍历的东西,一般的对象它也不好遍历
回复 使用道具 举报
只有数组、集合才能使用foreach,foreach语句是for语句的特殊简化版本。
如果要引用数组或者集合的索引,则foreach语句无法做到,foreach仅仅老老实实地遍历数组或者集合一遍。这时只能用for语句。

评分

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

查看全部评分

回复 使用道具 举报
王溢君 来自手机 中级黑马 2013-1-23 11:27:17
板凳
简写形式嘛。传统for用的,都可以使用高级for。。只不可有些情况更复杂就不使用了。。高级for只能遍历。
回复 使用道具 举报
这要看具体情况,如果仅仅是遍历的话建议用foreach,如果还要对容器或数组的内容进行操作时,建议不要用
回复 使用道具 举报
比如遍历一个数组,那么用哪个for都可以的。但是要在遍历的过程中有其他操作如:我想把角标为2的元素的值改掉为"ni hao"那就还得是传统for循环。
for-each只能是一些简单的遍历不对遍历到的数据有操作的情况下使用的。

传统for遍历一个数组并把数组的角标为2 的元素值改掉:
String[] str = {"1","2","3","4"};
for(int x=0; x<str.length; x++){
     if(x==2)
          str[x] = "ni hao"; //改掉数组角标为2的值为你好
}

增强for循环
for(String s : str}){
            //但是在增强for循环中却无法办到
           //增强for只能遍历,或对遍历到的值进行使用。
}

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

回复 使用道具 举报
高浩 中级黑马 2013-1-25 14:09:50
7#
它是for循环的简化版
foreach无法遍历带有索引的集合,
foreach(类型  变量:集合)
{
、。。循环体
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马