Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用';对于';在爪哇_Java_Loops_For Loop - Fatal编程技术网

Java 使用';对于';在爪哇

Java 使用';对于';在爪哇,java,loops,for-loop,Java,Loops,For Loop,我对Java相当陌生,在另一个关于堆栈溢出的问题中,有一个回答说for在Java中有两种用途: for (int i = 0; i < N; i++) { } for (String a : anyIterable) { } for(int i=0;i

我对Java相当陌生,在另一个关于堆栈溢出的问题中,有一个回答说for在Java中有两种用途:

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


for (String a : anyIterable) {
}
for(int i=0;i

我知道for的第一个用法,并且使用过很多次,但我从未见过第二个用法。它是用来做什么的?我什么时候用它

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

for (int i=0; i < N : i++)
为了简化第二种类型的样板文件(其中第三个子句经常未被使用),并且为了补充Java1.5中引入的示例,引入了两个示例中的第二个示例—增强的for循环或

第二个用于数组和泛型集合。它允许您迭代泛型集合,在该集合中您知道
集合的类型,而无需将
迭代器.next()
的结果强制转换为已知类型

比较:

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

循环的这种“新样式”也可用于阵列:

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

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

for(int i=0; i<N.length; i++)
for(inti=0;ifor in”循环主要是为了让代码更容易阅读而设计的,如果你把:发音为“in”)

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


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

它被称为for each循环,基本上,它可以用于任何实现

java.lang.Iterable

泛型集合实现此接口,但您也可以创建自己的类。它使处理列表/集合中的所有内容变得非常简单,尽管缺点是您无法像在传统循环中那样显式访问列表中的当前编号。与此相关的额外开销由于对迭代器类的调用,他的循环类型超过了传统的循环。

它们在功能上是相同的,但是 for(String a:anyIterable){}更具可读性、键入更少且更短。
for(int i=0;i通过循环控制变量为集合编制索引ifor(字符串a:anyIterable){}不为集合编制索引

或数组。如果变量的类型为Object:-)它不是泛型集合的专有项。@pavel-如果您想添加更多内容,我愿意将此作为wiki的答案。是的,这与泛型无关。正是foreach循环在实现Iterable(包括所有集合)的所有类型上工作。需要执行该转换的原因是,您没有使用迭代器的泛型参数。它应该是:“for(Iterator iter=myList.Iterator();iter.hasNext();)…字符串myStr=iter.next();…”在第一个代码块中,冒号应该是分号
for(int i=0; i<N.length; i++)
java.lang.Iterable