foreach和for循环区别 ,foreach和for循环的区别

本文目录

foreach和for循环的区别


foreach 依赖 IEnumerable.
第一次 var a in GetList() 时 调用 GetEnumerator 返回第一个对象 并 赋给a,
以后每次再执行 var a in GetList() 的时候 调用 MoveNext.直到循环结束.
期间GetList()方法只执行一次.
foreach (var a in GetList())
{
...
}
=
var a;
IEnumerator e = GetList().GetEnumerator();
while (e.MoveNext)
{
a = e.Current;
}for 循环靠下标定位. list[3] 相当于 *(list + 3).
for(int i = 0; i < GetCount(); i++)
{
....
}
=
int i = 0;
while(i < GetCount())
{
...
}for 循环每次循环会调用 GetCount() 来比较长度. 而 foreach 不考虑长度,只调用一次GetList().
结论.
在固定长度或长度不需要计算的时候for循环效率高于foreach.
在不确定长度,或计算长度有性能损耗的时候,用foreach比较方便.
并且foreach的时候会锁定集合中的对象.期间不能修改.

foreach和for循环区别
,foreach和for循环的区别图1

你觉得foreach语句使用于什么场景?


for语句在循环语句中有着重要的位置,首先它计算一个初始化序列,然后当某个条件为真时,重复执行嵌套语句并计算一个迭代表达式序列;如果为 False,则退出 for循环, for语句常用于遍历数组集合。


foreach循环专门用来遍历数组和集合的元素,foreach的工作原理是逐个枚举出数组或集合中的每一个元素,只要枚举一个元素就执行一次语句块中的内容,在使用 foreach变量循环的过程中要注意不可以更改遍历中的集合。


foreach和for循环区别
,foreach和for循环的区别图2


扩展资料:


在遍历集合或数组时,如果不使用 for语句,那么 foreach语句是比较好的选择。 foreach语句可以迅速遍历集合或数组,省去 for语句中设置循环起点和循环条件的过程。所以,遍历数组或集合应该优先考虑 foreach语句。


 foreach(int index,ref ival;arr){}第一个变量表示数组arr的索引 ival表示数组下标为index对应的值 加了ref关键字表示ival与数组的值相关联(ival改变 数组值也相应改变...类似于C++的引用)。


参考资料来源:


百度百科-foreach


百度百科-for循环


java lambda表达式 foreach


个人理解不喜勿喷。
简单的来说其实三种并没有什么太大的区别,一般情况下的性能也差不多。
for循环:
优点:可以直接获取下标,能更精确的定位。下标变量属于循环内变量,循环结束会自动回收。下标变量的步长可以自定,比较灵活。
缺点:需要根据下标才会获取循环内容。只能循环有序集合和数组,如Set和Map就无法遍历。
增强for:
优点:循环直接进行赋值,直接得到循环对象,不需要通过下标获取。可以遍历所有集合类型和数组。
缺点:循环有序集合时无法定位下标,需要在循环外层定义下标。无法遍历Map类型。
lambda:
优点:可以对所有集合类型和Map进行循环,特别是支持对Map进行循环,循环也是直接进行赋值,直接得到循环对象。
缺点:循环有序集合时无法定位下标,无法遍历数组,因为理论上来说他是属于迭代器的一种。同时因为循环体属于一个封闭范围的线程,在循环体内使用部分循环体外的变量需要加final关键字,很不方便。
另外说到了迭代器,可以参考lambda,不过写法就没lmbda那么方便了,不过迭代器有很多功能是循环比不上的,可以去看看。

foreach和for循环区别
,foreach和for循环的区别图3

foreach和for循环区别


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语句。

foreach和for循环区别
,foreach和for循环的区别图4

以上就是关于foreach和for循环区别 ,foreach和for循环的区别的全部内容,以及foreach和for循环区别 的相关内容,希望能够帮到您。

上一篇 2022年11月27日10时03分00秒
下一篇 2022年11月27日10时05分40秒

相关推荐

  • 世界上有多少种形状的英语 ,26个英文字母的真正含义

    本文目录 1.26个英文字母的真正含义 2.关于形状的英语单词有哪些 3.世界上有多少种形状 4.世界上有多少种形状 26个英文字母的真正含义 英文字母,即英文(English)所基于的字母,共26个。英文字母渊源于拉丁字母,拉丁字母渊源于希腊字母,而希腊字母则是由腓尼基字母演变而来的。大约公元前13世纪,腓尼基人创造了人类历史上第一批字母文字,共22个字母(无元音)。这是腓尼基人对人类文化的伟大贡献。腓尼基字母是世界字母文字的开端。在西方,它派生出古希腊字母,后者又发展为拉丁字母和斯拉夫字母。而希腊字母和拉丁字母是所有西方国家字母的基础。在东方,它派生出阿拉美亚字母,由此又演化出印度、阿拉伯…

    2022年05月31日
    16
  • 三到五年级英语发音整理 ,五年级上册英语怎么读单词

    本文目录 1.五年级上册英语怎么读单词 2.三至五年级英语单词句子 3.三年级到五年级的英语单词过去式汇总 4.英语发音 五年级上册英语怎么读单词 accent、interesting、queue、genius、compare、omit等。 一、accent  英 ['æksent] 美 ['æksent]     n. 重音;口音;强调 vt. 重读;强调 She spoke with an Irish accent. 她说话带有爱尔兰口音。 二、interesting 英 [ˈɪntrəstɪŋ] 美 ['ɪntrəstɪŋ] adj. 有趣的;引起兴趣的,令人关注的 短语 anythin…

    2022年05月31日
    16
  • 倒装句记忆口诀 ,So do I ,so I do ,I did so 的意义区别

    本文目录 1.So do I ,so I do ,I did so 的意义区别 2.倒装句的规律 3.英语倒装句的归纳总结 4.初中英语倒装句的归纳总结 So do I ,so I do ,I did so 的意义区别 so do I和so did I 是一样的,只是时态有别。用于另一个人做了某事,我也做了某事。如: He likes English. So do I. 他喜欢英语,我也喜欢。 He learned French. So did I. 他学了法语,我也学了。 So I do/did表示“我确实……”。如: ---- You wrote a good composition in…

    2022年05月30日
    16
  • 一句话中只能有一个谓语动词 ,英语中一个句子只能有一个谓语动词

    本文目录 1.英语中一个句子只能有一个谓语动词 2.英语一句话中只能有一个谓语动词吗 3.一句话只能有一个谓语动词吗 4.英语中一句话只能有一个谓语动词吗 英语中一个句子只能有一个谓语动词 大多数情况是,但是不是绝对吧。 I can go pick her up. Do you want to go get a cup of coffee? 这里面就不是只有一个谓语动词了吧?(不过我没有似乎没有怎麼学过语法,我假设谓语动词的意思是动词本身,而不是ing, -ed形式的动词?) 英语一句话中只能有一个谓语动词吗 这只是为了避免流水句的一种说法 ,需要正确理解。所谓一个谓语 包括并列谓语。简单句需…

    2022年05月31日
    16
  • 00的英语单词怎么写 ,一百用英语怎么说

    本文目录 1.一百用英语怎么说 2.三十四十五十六十七十八十九十一百的英文单词怎么写 3.8:00用英语怎么拼 4.一百的英文怎么说 一百用英语怎么说 一百用英语表示为One hundred,其中hundred的意思为一百,许多,100 到 999 间的数目,某个世纪的年代。 拓展资料 One hundred 1、Her one-of-a-kind custom garments are priced from one hundred dollars to more than a thousand dollars. 在她这里定做一件款型独一无二的衣服,价格从100美元到1,000美元以上不等。…

    2022年05月30日
    16
  • 代词英语语法归纳 ,英语人称代词有哪些

    本文目录 1.英语人称代词有哪些 2.英语中代词的用法总结 3.英语语法人称代词表格 4.英语中的代词的定义,分类及用法 英语人称代词有哪些 英语人称代词如下图: 英语中人称代词(Personal Pronoun)意为用于直接指代人或者事物的代词,属于代词范畴,就像汉语中的“你”、“我”、“他”。常用的英语人称代词有:I、you、he、she、it(主格)。人称代词在句中作不同成分时有不同的形式,如:主格、宾格、第三人称单数形式等。 扩展资料: 人称代词的排列顺序 1、两个或两个以上的人称代词并列使用时,对于单数人称代词,按“二三一”的顺序排列;对于复数人称代词,按“一二三”的顺序排列。如: …

    2022年05月31日
    16
  • 丰富我们的日常生活英文 ,使我的生活更加丰富多彩英语翻译

    本文目录 1.使我的生活更加丰富多彩英语翻译 2.记录日常生活用英文怎么说 3.节日使我们的生活丰富多彩可以让我们出去旅游带动地方经济增长.翻译成英文 4.使我们的生活变得丰富多彩英语 使我的生活更加丰富多彩英语翻译 Everyday life is colorful. Daily life is splendid and full of variety. Splendid: 有闪亮的,灿烂的意思 Full of variety: 着重强调多样性 记录日常生活用英文怎么说 “日常生活”用英文表示有很多种: 一、Daily life:英[ˈdeili laif] 美[ˈdeli laɪf] 译文…

    2022年05月31日
    16
  • 五官歌儿歌 英语 ,关于五官的英语儿歌简单的歌曲简谱 - 百度宝宝知道

    本文目录 1. 2. 3. 4.儿童歌曲大全30首歌名 儿童歌曲大全30首歌名 经典流行中英文儿歌大合集百度网盘下载 链接:***/s/1DmPQsCvi56rLm07CqFVMBQ ?pwd=1234 提取码:1234 简介:原创和收集高清儿歌视频大全,每天都有各种各样的新鲜儿歌出炉,包含有儿歌串烧、儿童歌曲大全、少儿故事、经典儿歌、胎教歌曲、英文儿歌….. 以上就是关于五官歌儿歌 英语 ,关于五官的英语儿歌简单的歌曲简谱 - 百度宝宝知道的全部内容,以及五官歌儿歌 英语 的相关内容,希望能够帮到您。…

    2022年05月31日
    16