黑马程序员技术交流社区

标题: 刚看到有关foreach循环语句的,有点思考? [打印本页]

作者: 周志强    时间: 2013-1-23 09:11
标题: 刚看到有关foreach循环语句的,有点思考?
昨天  看到毕老师讲的视频  说foreach循环,java从1.5以后开始支持,那么是不是所有的对象都可以使用foreach循环呢?在使用的时候对象应当符合什么条件呢?难道只有数组或者实现了Iterable接口的类实例?还有没有其他的什么情况?

作者: 马志军    时间: 2013-1-23 09:47
记得就只有数组或者实现了Iterable接口的类。foreach循环必须要有被遍历的东西,一般的对象它也不好遍历
作者: 逍林游    时间: 2013-1-23 10:59
只有数组、集合才能使用foreach,foreach语句是for语句的特殊简化版本。
如果要引用数组或者集合的索引,则foreach语句无法做到,foreach仅仅老老实实地遍历数组或者集合一遍。这时只能用for语句。
作者: 王溢君    时间: 2013-1-23 11:27
简写形式嘛。传统for用的,都可以使用高级for。。只不可有些情况更复杂就不使用了。。高级for只能遍历。
作者: 高浩    时间: 2013-1-23 14:57
这要看具体情况,如果仅仅是遍历的话建议用foreach,如果还要对容器或数组的内容进行操作时,建议不要用
作者: 刘军亭    时间: 2013-1-23 18:56
比如遍历一个数组,那么用哪个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只能遍历,或对遍历到的值进行使用。
}
作者: 高浩    时间: 2013-1-25 14:09
它是for循环的简化版
foreach无法遍历带有索引的集合,
foreach(类型  变量:集合)
{
、。。循环体
}




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