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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 山西_李帅 于 2013-4-25 12:47 编辑

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

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

5 个回复

倒序浏览
钟林杰 来自手机 中级黑马 2013-4-25 00:42:56
沙发

回帖奖励 +5

你是说foreach语句吧for(数组类型 :数组名),这是for循环的增强,主要是用于遍历数组。例如遍历一维数组for(int i:arr )其中i 的类型必须与需要遍历的数组类型一致,arr 是整型数组。你可以理解为把每次遍历的元素传递给i,所以每次可以通过i 获取数组中的元素。二维数组的遍历for (int a[]:arr){for (int i :a)}。来自: Android客户端

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的(可以查看编译后的文件),
但是增强for循环 有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
/*
* 高级for循环
* 格式:
* for(数据类型 变量名:被遍历的集合Collection或者数组){}//简化书写
* 注意:对集合进行遍历的时候只能获取元素,不能对集合进行操作
*
* 迭代器除了遍历,还可以进行remove的操作。
* 如果使用ListIterator还可以在遍历过程中进行增删改查的动作
*
* 传统的for和高级for有什么区别呢?
* 就一个高级for有一个局限性,必须有被遍历的目标
* 建议在遍历数组的时候还是希望传统for因为传统for可以定义角标
*
* */

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
增强的“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循环更具可读性。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
{:soso_e102:}版主拎包郑重提示:如果楼主问题已经解决那么。在自己发表的帖子下面,点“修改”,
然后把主题的分类标记成“已解决”。
就OK了

评分

参与人数 1黑马币 +20 收起 理由
张晓璐 + 20 很给力!

查看全部评分

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