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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© selectgoodboy 中级黑马   /  2013-4-18 19:19  /  27434 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问哪位大侠能帮下忙,今天看了一天视频讲解,到了增强for循环的时候,老师的精炼的一提而过,后来还是不太理解,最好能结合实例做一下讲解。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

9 个回复

倒序浏览
同学,你好
for循环我也在学习阶段
可能说的不是很深,但容易理解
for(int x=0这个可以理解为循环次数初始化,填写多少都行,;x<2这个控制真正的循环次数;x++这个就是循环方式了,可以一次+1,也可以1次加2.多敲代码就了解了)
{
System.out.println(x);//大括号里德就是循环体。所有写在大括号的内容都会被重复执行
整个循环体
}


循环的运行顺序是这样的
for(1先运行这个int x=0;2再判断条件决定是不是运行,满足就运行,不满足就结束x<10;4最后在叠加一次看是不是还满足中间的那个判断表达式,满足就运行,不满足就结束。一直这样反复x++)
{
3运行整个循环体......
}



希望你能看懂。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报

这个嘛。还是得多练习,写多了,自然而然就知道了。
  1. //增强for循环
  2. public class ForArray
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int[] arr = {1,2,3,4,5,6,7};

  7.                 for(int a:arr)
  8.                 {
  9.                         System.out.print(a);
  10.                 }
  11.         }
  12. }
  13. /*
  14.         for (循环变量类型 循环变量名称 : 要被遍历的对象) 循环体
  15.         例子中,
  16.         1.arr就是为 要被遍历的对象,可以是数组,集合
  17.         2.循环变量类型就是这个arr数组的数据类型,即int
  18.         3.循环变量名称就是a,这个可以自己定义
  19. */
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报 2 0
1.首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的,

但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。
2.ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。
3.而对于LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用增强for循环,也就是iterator。
例如:
int[] a={...............};
for(int i:a)
System.out.println(i);

这个for-each就会遍历[]a数组,很方便的东西

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
增强型的for循环 优点主要体现在集合中,
随便举个例子比如对 set 的遍历一般是迭代遍历:
Set<String> set = new HashSet<String>();
Iterator<String> it = set.iterator();
while (it.hasNext())
String str = it.next();这中东西很麻烦很繁琐,但是你用增强for循环的话就变的很简单。
上面的例子如果你用for循环的话你打出的代码是;
for (String str : set) {     
System.out.println(str); }   是不是简单多了呢。

System.out.println(str);
}
回复 使用道具 举报
这是JAVA1.5 增强的for 循环的新特性。。(enhanced for loop)
所谓“增强的for 循环”,主要也是针对容器的。使用该项特性时,开发者可以将“利用iterator
遍历容器”的逻辑交给编译器来处理。例如下列代码:
void cancelAll(Collection c) {
for (Iterator i = c.iterator(); i.hasNext(); ) {
TimerTask tt = (TimerTask) i.next();
tt.cancel();
}
}
可以用增强的for 循环改写为:
void cancelAll(Collection c) {
for (Object o : c)
((TimerTask)o).close();
}
编译器判断对象c 是一个Collection 子对象(即是容器)之后,就会允许使用增强的for 循环
形式,并自动取到c 的迭代器,自动遍历c 中的每个元素。
可以看到,上面的代码中仍然有一个强制类型转换(((TimerTask)o).close();)。实际上,这
项特性应该普遍地与泛型结合,以获得最大的利益。结合泛型之后,上述代码变成:
void cancelAll(Collection c) {
for (TimerTask task : c)
task.cancel();
}
回复 使用道具 举报
解答的都很好,学习过了
回复 使用道具 举报
hacket 发表于 2013-4-18 19:40
这个嘛。还是得多练习,写多了,自然而然就知道了。

66666666刚才想用忘了怎么搞
回复 使用道具 举报
Iven 初级黑马 2016-2-26 09:49:04
9#
给赞,简单易懂的那内容,但是还是得多写才能真正理解啊~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马