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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑志强 中级黑马   /  2013-3-13 10:30  /  1595 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑志强 于 2013-3-14 18:42 编辑

内它并没有循环条件啊?为什么?那什么时候用它,能用于什么类

评分

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

查看全部评分

4 个回复

倒序浏览
foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。

foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。

foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。

foreach的语句格式:
for(元素类型t 元素变量x : 遍历对象obj){
     引用了x的java语句;
}

foreach语句是for语句特殊情况下的增强版本,简化了编程,提高了代码的可读性和安全性(不用怕数组越界)。相对老的for语句来说是个很 好的补充。提倡能用foreach的地方就不要再用for了。在用到对集合或者数组索引的情况下,foreach显得力不从心,这个时候是用for语句的 时候了。foreach一般结合泛型使用.

评分

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

查看全部评分

回复 使用道具 举报
foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach的语句格式:for(元素类型t 元素变量x : 遍历对象obj){     引用了x的java语句;} 例如:for(int x : arry) {System.out.println(x);}    这是在依次打印出数组arry里的元素的值,就跟  for(int x=0;x<arry.length;x++) {System.out.println(arry[x]);}  是一样的效果

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 曾玉锋 于 2013-3-13 12:44 编辑

1.首先强调掉的是foreach只能对实现了IEnumerator接口或者间接实现IEnumerator接口的类型进行遍历。
2.foreach遍历集合的过程:
下面是IEnumerator接口,
        public interface IEnumerator
        {
                object Current
                {
                        get;
                }
                bool MoveNext();
                void Reset();
        }
foreach遍历集合的过程如下:
1.将集合或者数组的数据copy一份到内存,并且获得一个IEnumerator对象,获得当前在新的集合或者新数组中的第一个对象赋值给Current,
大家可以看到Current属性是只读的,所以只能读不能修改,况且也不是对原集合或数组中操作。

2.通过调用IEnumerator对象的MoveNext()方法判断是否还有对象可读,且顺序向下依次读取,所以是没法倒着读,也不能用下标去改变读取的顺序。

评分

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

查看全部评分

回复 使用道具 举报
  谢谢3楼 很详细
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马