黑马程序员技术交流社区

标题: 能帮我详细解释下增强for循环么? 不怎么会用啊. 老犯迷糊 [打印本页]

作者: 山西_李帅    时间: 2013-4-25 00:26
标题: 能帮我详细解释下增强for循环么? 不怎么会用啊. 老犯迷糊
本帖最后由 山西_李帅 于 2013-4-25 12:47 编辑

能帮我详细解释下增强for循环么?  不怎么会用啊. 老犯迷糊,理解不透彻.

作者: 钟林杰    时间: 2013-4-25 00:42
你是说foreach语句吧for(数组类型 :数组名),这是for循环的增强,主要是用于遍历数组。例如遍历一维数组for(int i:arr )其中i 的类型必须与需要遍历的数组类型一致,arr 是整型数组。你可以理解为把每次遍历的元素传递给i,所以每次可以通过i 获取数组中的元素。二维数组的遍历for (int a[]:arr){for (int i :a)}。
作者: 钟伟杰    时间: 2013-4-25 02:06
增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的(可以查看编译后的文件),
但是增强for循环 有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。
作者: 本人已死    时间: 2013-4-25 07:19
/*
* 高级for循环
* 格式:
* for(数据类型 变量名:被遍历的集合Collection或者数组){}//简化书写
* 注意:对集合进行遍历的时候只能获取元素,不能对集合进行操作
*
* 迭代器除了遍历,还可以进行remove的操作。
* 如果使用ListIterator还可以在遍历过程中进行增删改查的动作
*
* 传统的for和高级for有什么区别呢?
* 就一个高级for有一个局限性,必须有被遍历的目标
* 建议在遍历数组的时候还是希望传统for因为传统for可以定义角标
*
* */
作者: harborbest    时间: 2013-4-25 08:24
增强的“for”循环(Enhanced For loop)--减少迭代器(iterator)的潜在错误
  1. void printAll(ArrayList al) {
  2.  for (Iterator i = al.iterator(); i.hasNext(); ) {
  3.    User u= (User)i.next();
  4.   System.out.println(u.getName());
  5.   }
  6. }
复制代码
现在,用增强的For语句实现相同方法:

 
  1.  void printAll(ArrayList al) {

  2.   for (User user : al)

  3.   System.out.println(user.getName());

  4.   }

复制代码
这段代码要比上面清晰许多并且避免了强制类型转换 。

在这类For循环中,你应该将":"看成"in",所以,在该例中可以看成"User  user in al"。这种For循环更具可读性。
作者: 袁梦希    时间: 2013-4-25 08:56
{:soso_e102:}版主拎包郑重提示:如果楼主问题已经解决那么。在自己发表的帖子下面,点“修改”,
然后把主题的分类标记成“已解决”。
就OK了






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