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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 魏亮 中级黑马   /  2012-9-25 17:00  /  1878 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 魏亮 于 2012-9-25 17:34 编辑

class Demo
{
        public static void main(String[] args)
        {
                int[] arr={4,8,9,4,3,5,};
                for (int x:arr)
                {
                        System.out.println(x);
                }
        }
}
如以上代码,数组可以使用高级for循环,

上课时老师讲的是实现了iterable接口后的类可以使用高级for,
因为高级for实际上调用的也是迭代器,
我的问题是数组既然能适应高级for循环,那是不是数组以实现了iterable接口,如果是的话,数组也就可以使用
迭代器取出元素了,那怎么用呢?
如果没有实现iterable,那数组为什么可以使用高级for??
求解。。。。。。。。。。。。。。。。。。。?

评分

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

查看全部评分

4 个回复

倒序浏览
一、for循环增强
语法:
for(type 变量名:集合变量名){...}
注意事项:
1、迭代变量必须在()中定义!
2、集合变量可以是数组或者实现了Iterable接口的集合类。
举例:
public static int add(int x,int...args){


     int sum = x;
     for(int arg: args){
        
        sum+=arg;
     }
      return  sum;
}

评分

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

查看全部评分

回复 使用道具 举报
首先要明确一点,Iterable是一个接口,只有类才能实现接口,而数组是一种数据类型,不是类,所以实现接口无从谈起。
类之所以要实现Iterable接口才能使用Iterator迭代器,是因为Iterator方法封装在了Iterable接口中,不实现该接口,其中的方法是无法使用的。
传统for循环和高级for循环都是对数据的遍历,虽然规则有差异,但实质是一样的。数组能使用传统for,当然也能用高级for,这不是面向对象问题,而是语法问题。所以最后问题实际上是,为什么数组能使用for循环遍历?答:因为语法,就好像if是用来判断一样。
回复 使用道具 举报
明白了。。。谢谢上边各位
回复 使用道具 举报
可以,没必要用foreach,原版的for还是好。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马