Java中'for'的使用

Jos*_*ren 24 java loops for-loop

我是Java的新手,在关于for循环的另一个Stack Overflow问题中,答案说Java中有两种用法:

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


for (String a : anyIterable) {
}
Run Code Online (Sandbox Code Playgroud)

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

akf*_*akf 37

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

for (int i=0; i < N : i++)
Run Code Online (Sandbox Code Playgroud)

代码中有许多实例for用于迭代集合:

for (Iterator iter = myList.iterator(); iter.hasNext();)
Run Code Online (Sandbox Code Playgroud)

为了缓解第二种类型的boeplading(第三种子句常常未被使用),并且赞美Java 1.5中引入的泛型,你的两个例子中的第二个 - 增强的for循环,或者for-each loop- 被引入.

第二个用于数组和通用集合. 请参阅此文档.它允许您遍历一个通用集合,您可以在其中知道其类型Collection,而无需将结果Iterator.next()转换为已知类型.

相比:

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

for (String myStr : myList) {
   //...do something with myStr
 }
Run Code Online (Sandbox Code Playgroud)

循环的这种"新风格"也可以用于数组:

String[] strArray= ...
for (String myStr : strArray) {
   //...do something with myStr
}
Run Code Online (Sandbox Code Playgroud)

  • 它不是通用集合所独有的. (3认同)

wm_*_*die 5

“for in”循环主要是吸引人的,它使代码更易于阅读。(如果您将 : 发音为“in”)。

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

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