Java中’for’的使用
我是Java的新手,在关于for循环的另一个Stack Overflow问题中,答案说Java中有两种用法:
for (int i = 0; i < N; i++) { } for (String a : anyIterable) { }
我知道第一次使用for并且已经使用了很多,但我从未见过第二个。 过去做什么以及何时使用它?
您指定的两个中的第一个是经典的C for
循环。 这使程序员可以控制迭代标准并允许三个操作:初始化; 循环测试; 增量表达式。 虽然它常常用于递增重复一定次数的尝试,例如:
for (int i=0; i < N : i++)
代码中有许多实例,其中for
用于迭代集合:
for (Iterator iter = myList.iterator(); iter.hasNext();)
为了缓解第二种类型的boeplading(第三种子句经常未被使用),并且为了补充Java 1.5中引入的generics ,你的两个例子中的第二个 - 增强的for循环或for-each loop
- 被引入。
第二个用于数组和通用集合。 请参阅此文档 。 它允许您遍历一个通用集合,在那里您知道Collection
的类型,而不必将Iterator.next()
的结果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 }
循环的这种“新风格”也可以用于数组:
String[] strArray= ... for (String myStr : strArray) { //...do something with myStr }
“for in”循环主要是令人眼花缭乱,使代码更容易阅读。 (如果你发音为:as“in”)。
每当我在列表或数组上进行迭代时,我几乎只在我自己的代码中使用第二种类型。
在处理大部分数学代码时,我仍然使用常规for循环,或者当我需要“i”来查看循环次数时。
它用于遍历整个数组或Iterable集合。 它基本上取代了:
for(int i=0; i
并且可以与Generics一起使用,这非常酷
它被称为每个循环,基本上,它可以与任何实现的东西一起使用
java.lang.Iterable
通用集合实现了这个接口,但你也可以创建自己的类。 它使得处理列表/集合中的所有内容变得非常容易,尽管缺点是您没有像在传统循环中那样明确访问列表中的当前数字。 由于对迭代器类的调用,传统循环上存在与此类循环相关的一些额外开销。
它们在function上都相同,但对于(String a:anyIterable){} ,它更易读,更少打字和更短。 for(int i = 0; i