黑马程序员技术交流社区
标题:
关于高级for循环的问题
[打印本页]
作者:
魏亮
时间:
2012-9-25 17:00
标题:
关于高级for循环的问题
本帖最后由 魏亮 于 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??
求解。。。。。。。。。。。。。。。。。。。?
作者:
尤圣回
时间:
2012-9-25 17:09
一、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;
}
作者:
孙岳
时间:
2012-9-25 17:23
首先要明确一点,Iterable是一个接口,只有类才能实现接口,而数组是一种数据类型,不是类,所以实现接口无从谈起。
类之所以要实现Iterable接口才能使用Iterator迭代器,是因为Iterator方法封装在了Iterable接口中,不实现该接口,其中的方法是无法使用的。
传统for循环和高级for循环都是对数据的遍历,虽然规则有差异,但实质是一样的。数组能使用传统for,当然也能用高级for,这不是面向对象问题,而是语法问题。所以最后问题实际上是,为什么数组能使用for循环遍历?答:因为语法,就好像if是用来判断一样。
作者:
魏亮
时间:
2012-9-25 17:34
明白了。。。谢谢上边各位
作者:
chjxs
时间:
2012-9-25 21:04
可以,没必要用foreach,原版的for还是好。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2