Java 使用';对于';在爪哇
我对Java相当陌生,在另一个关于堆栈溢出的问题中,有一个回答说for在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
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通过循环控制变量为集合编制索引i和for(字符串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