foreach和for的区别

如题所述

就编码来说各有好处:for更灵活,foreach更简便

就性能来说:看图。

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-07-28
1.如果只是遍历集合或者数组,用foreach好些,快些。
2.如果对集合中的值进行修改,就要用for循环了。其实foreach的内部原理其实也是Iterator,但它不能像Iterator一样可以人为的控制,而且也不能调用iterator.remove();更不能使用下标来访问每个元素,所以不能用于增加,删除等复杂的操作。举个例子:
for(String aid:list){
if(aid.equals("aa")){
list.remove(aid); //这行会报错,不能修改list的长度
}
}
所以foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句。本回答被网友采纳
第2个回答  2015-05-19
1.如果只是遍历集合或者数组,用foreach好些,快些。
2.如果对集合中的值进行修改,就要用for循环了。其实foreach的内部原理其实也是Iterator,但它不能像Iterator一样可以人为的控制,而且也不能调用iterator.remove();更不能使用下标来访问每个元素,所以不能用于增加,删除等复杂的操作。举个例子:
for(String aid:list){
if(aid.equals("aa")){
list.remove(aid); //这行会报错,不能修改list的长度
}
}
所以foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句。
第3个回答  2015-04-14
for和foreach有本质的区别
foreach的具体过程是由目标对象控制的
所以并非集合内容更改了就不可以使用foreach
而是Array和Collection对象如此实现了它而已
你却可以完全按照自己的想法去实现这一过程

也许你可以去翻一下Gof的Visitor模式,foreach看起来就是它的简化版本
我们应该把foreach当作一种设计模式而不是简单的一个循环语句去理解

目前C#里的foreach是以IEnumerable的方式去实现,这只是保留COM的实现方式,这种方式我认为其实不太便于理解
我想如果存在一个IForEachable其成员为ForEach(..),这样可能更能让人容易明白
第4个回答  2017-09-30
1.如果只是遍历集合或者数组,用foreach好些,快些。
2.如果对集合中的值进行修改,就要用for循环了。其实foreach的内部原理其实也是Iterator,但它不能像Iterator一样可以人为的控制,而且也不能调用iterator.remove();更不能使用下标来访问每个元素,所以不能用于增加,删除等复杂的操作。本回答被提问者采纳

foreach和for循环区别
foreach和for循环区别:for循环是js提出时就有的循环方法,而forEach是ES5提出的,挂载在可迭代对象原型上的方法,例如Array Set Map。for循环通过下标对循环中的代码反复执行,功能强大,可以通过index取得元素。而forEach是一个迭代器,负责遍历可迭代对象。可迭代对象是指实现了Symbol.iterator接口的对象...

foreach和for循环区别
区别一:如果只是遍历集合或者数组,用foreach好些,快些。区 别二:如果对集合中的值进行修改,就要用for循环了。其实foreach的内部原理其实也是Iterator,但它不能像Iterator一样可以人为的控制,而且也不能调用iterator.remove();更不能使用下标来访问每个元素,所以不能用于增加,删除等复杂的操作。看...

简述for与foreach语句的区别
for循环和foreach循环的主要区别在于它们的迭代方式和适用场景。For循环更为通用和灵活,而foreach循环则更简洁且专注于集合元素的遍历。详细解释如下:首先,for循环是一种通用的循环结构,在编程中广泛使用。它通过指定循环的初始条件、循环条件和迭代步骤来控制循环的执行。例如,在C#或Java中,一个典型的...

foreach与for的区别
1.如果只是遍历集合或者数组,用foreach好些,快些。2.如果对集合中的值进行修改,就要用for循环了。其实foreach的内部原理其实也是Iterator,但它不能像Iterator一样可以人为的控制,而且也不能调用iterator.remove();更不能使用下标来访问每个元素,所以不能用于增加,删除等复杂的操作。举个例子:for(S...

简述for与foreach语句的区别
语法差异:for循环的语法相对复杂,需要指定循环的起始条件、终止条件和迭代步长。而foreach循环的语法则更加简洁,通常只需要指定要遍历的集合和迭代变量即可。综上所述,for循环和foreach循环各有其优缺点和适用场景。在选择使用哪种循环时,应根据具体的需求和上下文环境进行权衡和选择。

foreach和for循环的区别
foreach相对于for循环,代码减少了,但是foreach依赖IEnumerable。在运行的时候效率低于for循环。当然了,在处理不确定循环次数的循环,或者循环次数需要计算的情况下。使用foreach比较方便。而且foreach的代码经过编译系统的代码优化后,和for循环的循环类似。可以说,foreach语句是for语句的特殊简化版本,在遍历...

forEach与for循环的差别
首先,两者的写法不同。for循环采用明确的计数结构,而forEach则是基于数组的每个元素进行操作。在控制流程上,for循环允许中断(通过break或return),而forEach则没有这样的中断机制。其次,for循环和forEach在处理Array扩展行为上也有所区别。当你在for循环中打印数组值时,原生的Array类扩展不会显示,但...

foreach和for循环的区别
foreach和for循环的主要区别在于循环机制和用途。一、基本定义和机制 foreach循环是一种用于遍历集合或数组中的每一个元素的循环结构。它不需要事先知道集合或数组的大小,遍历过程自动处理。在每次迭代中,foreach循环访问集合或数组中的每一个元素,直到所有元素都被访问过。这种循环结构在编程中主要用于...

for循环和forEach的区别,看着一篇就够了!
(1) for循环是通过生成数组的索引下标循环遍历数组的每一个数据元素 forEach是JavaScript定义的数组的函数方法,通过JavaScript底层程序循环遍历数组的数据元素 (2) for循环可以通过break关键词来终止循环的执行 forEach中调用执行break程序会报错 (3) for循环可以通过控制循环变量的数值控制对于循环的执行 for...

foreach 和 for 循环的区别
相比之下,foreach确保了集合对象在迭代过程中的安全性,不允许在循环内部修改集合。而对于for循环,其工作原理依赖于下标。例如,list[3]等同于*(list + 3),每次迭代会通过索引来访问列表中的元素。在for循环中,如for(int i = 0; i < GetCount(); i++),它每次循环都会调用GetCount()来...

相似回答