Java中'for'的使用

时间:2009-08-07 03:38:13

标签: java loops for-loop

我对Java很新,在另一个关于for loops的Stack Overflow问题中,答案说Java中有两种用法:

for (int i = 0; i < N; i++) {
}


for (String a : anyIterable) {
}

我知道第一次使用for并且已经使用了很多,但我从未见过第二个。过去做什么以及何时使用它?

5 个答案:

答案 0 :(得分:37)

您指定的两个中的第一个是经典的C for循环。这使程序员可以控制迭代标准并允许三个操作:初始化;循环测试;增量表达式。虽然它常常用于递增重复一定次数的尝试,例如:

for (int i=0; i < N : i++)

代码中有更多实例,其中for用于迭代集合:

for (Iterator iter = myList.iterator(); iter.hasNext();)

缓存第二种类型的boeplading(第三种子句经常未被使用),并赞美Java 1.5中引入的Generics,这是你的两个例子中的第二种 - 增强的for循环,或{ {3}} - 介绍了。

第二个用于数组和通用集合。 for-each loop。它允许您遍历一个通用集合,在那里您知道Collection的类型,而不必将Iterator.next()的结果转换为已知类型。

比较

for(Iterator iter = myList.iterator; iter.hasNext() ; ) {
   String myStr = (String) iter.next();
   //...do something with myStr
}

for (String myStr : myList) {
   //...do something with myStr
 }

这个'new style'for循环也可以用于数组:

String[] strArray= ...
for (String myStr : strArray) {
   //...do something with myStr
}

答案 1 :(得分:4)

“for in”循环主要是眼花缭乱,使代码更容易阅读。 (如果你发音为:as“in”)。

每当我在列表或数组上进行迭代时,我几乎只在我自己的代码中使用第二种类型。

在处理大部分数学代码时,或者当我需要“i”来查看循环次数时,我仍然使用常规for循环。

答案 2 :(得分:1)

它用于遍历整个数组或Iterable集合。它基本上取代了:

for(int i=0; i<N.length; i++)

可以和非常酷的Generics一起使用

答案 3 :(得分:1)

它被称为每个循环,基本上,它可以与任何实现

的东西一起使用
java.lang.Iterable

通用集合实现了这个接口,但你也可以创建自己的类。它使得处理列表/集合中的所有内容变得非常容易,尽管缺点是您没有像在传统循环中那样明确访问列表中的当前数字。由于对迭代器类的调用,传统循环中存在与此类循环相关的额外开销。

答案 4 :(得分:0)

两者在功能上都相同,但是 for(String a:anyIterable){} ,更具可读性,更少打字和更短。 for(int i = 0; i&lt; N:i ++)索引集合,循环控制变量 i for(String a:anyIterable){} 不会对集合编制索引