foreach循环java创建?

时间:2010-03-25 17:56:17

标签: java

为什么在java中引入了这个循环?它是一个java创建吗?它的目的是什么(提高内存/ CPU利用率)?

5 个答案:

答案 0 :(得分:10)

它掩盖了迭代器的使用,这些迭代器使用起来很重且很笨拙。有很多很多实例,你只想迭代一个集合而不用处理它的索引。 java foreach结构使这成为可能。

答案 1 :(得分:10)

  

为什么在java中引入了这个循环?

这只是为了简化对泛型集合和数组的循环。而不是

for (int i = 0; i < strings.length; i++) {
    String string = strings[i];
    // ...
}

你可以做到

for (String string : strings) {
    // ...
}

使代码更易读,更易于维护。

  

是创建java吗?

不,它早在Java之前就存在于其他语言中。 Java实施起来相对较晚。

  

它的目的是什么?

见第一个答案。

要了解详情,请查看Sun guide on the subject

更新:这并不意味着它会使其他类型的循环变得多余。如果你想为其他目的维护循环计数器而不是通过索引获取项目,那么使用索引的for循环仍然很有用。如果你想在循环中删除或更改集合本身的元素,那么使用迭代器的for循环仍然很有用。

答案 2 :(得分:3)

请参阅Foreach

  

对于每个(或foreach)是一台计算机   遍历项目的语言习语   一个集合。通常使用Foreach   代替声明标准。   与其他for循环结构不同,   但是,foreach循环1通常   没有明确的反击:他们   基本上说“做到这一切   在这个集合“,而不是”做这个x   时代“。这避免了潜力   逐个错误并生成代码   更容易阅读。在面向对象中   语言和迭代器,即使   隐含的,经常被用作手段   遍历。

     

几种语言,包括Python,   只有一个foreach循环,需要   明确计算实现   行为的“标准”。

特别是关于Java的部分:

  

在JDK 5.0中引入了foreach-construct。官方消息来源使用了几个名称。它被称为“增强的循环”,“For-Each循环”和“foreach声明”。

答案 3 :(得分:2)

这实际上只是Java模仿的功能结构已经存在了很长时间,it's called map。实现它的原因是,通常会创建一个循环,只需对容器的每个元素执行一个操作,而不考虑它的索引。 Java的for(element : container) { doSomethingWith(element); }语法只是一种比其他方法更简洁的方法,它可以用索引进行for循环

for(int i=0; i<container.size(); ++i) { doSomethingWith(container.at(i));  }

更长并创建一个不必要的索引变量,或者使用迭代器

进行循环
Iterator it = container.iterator(); 
while(it.hasNext()) { doSomethingWith(it.next()); }

也更长。这个循环基本上是for( : ) {}循环被编译为的,尽管可能存在一些细微的差别(我实际上没有看到字节码)。

答案 4 :(得分:0)

很明显是“句法糖”

不要认为有任何提高效率。

Java社区希望语言有点现代化,与C#和Ruby竞争..