mydy.net
当前位置:首页 >> ForEACh和For的区别 >>

ForEACh和For的区别

foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便. foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本. foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句.从英文字面意思理解foreach也就是“for 每一个”的意思.实际上也就是这个意思. foreach的语句格式: for(元素类型t 元素变量x : 遍历对象obj){ 引用了x的java语句; }

for和foreach有本质的区别 foreach的具体过程是由目标对象控制的 所以并非集合内容更改了就不可以使用foreach 而是Array和Collection对象如此实现了它而已 你却可以完全按照自己的想法去实现这一过程 也许你可以去翻一下Gof的Visitor模式,foreach看起来就是它的简化版本 我们应该把foreach当作一种设计模式而不是简单的一个循环语句去理解 目前C#里的foreach是以IEnumerable的方式去实现,这只是保留COM的实现方式,这种方式我认为其实不太便于理解 我想如果存在一个IForEachable其成员为ForEach(..),这样可能更能让人容易明白

foreach 依赖 IEnumerable.第一次 var a in GetList() 时 调用 GetEnumerator 返回第一个对象 并 赋给a,以后每次再执行 var a in GetList() 的时候 调用 MoveNext.直到循环结束.期间GetList()方法只执行一次.foreach (var a in GetList()){ }=

for循环,通过下标,对循环中的代码反复执行,功能强大,可以通过index取得元素.在处理比较复杂的处理的时候较为方便.foreach循环 foreach,从头到尾,对于集合中的对象遍历.适用于简单的遍历.foreach使用的时候,会锁定集合的对

for循环和C语言中的一样,比如 for(i=0; i<10; i++) a[i] = 5; foreach循环访问数组的用法是 for(int x: a) x = 5; switch是多分支,属于条件语句,和C语言中的一样.比如 switch(score/10){ case 0: case 1: case 2: case 3: case 4: case 5: println("不及格"); break; case 6: case 7: case 8: println("一般"); break; case 9: case 10: println("优秀"); break; default: }

for和foreach有本质的区别 foreach的具体过程是由目标对象控制的 所以并非集合内容更改了就不可以使用foreach 而是array和collection对象如此实现了它而已 你却可以完全按照自己的想法去实现这一过程 也许你可以去翻一下gof的visitor模式,foreach看起来就是它的简化版本 我们应该把foreach当作一种设计模式而不是简单的一个循环语句去理解 目前c#里的foreach是以ienumerable的方式去实现,这只是保留com的实现方式,这种方式我认为其实不太便于理解 我想如果存在一个iforeachable其成员为foreach(..),这样可能更能让人容易明白

foreach 是jdk1.5出现的新特性.区别没有.实质都是一样的.都是循环遍历.foreach一般只用来取值.要对每个遍历出来的对象进行比较判断时用for循环好点

foreach只能用于数组或集合对象的迭代,集合元素的类型必须可以转换为 identifier 类型.不能使用计算为 null 的表达式. 而应计算为实现 IEnumerable 的类型或声明 GetEnumerator 方法的类型.在后一种情况中,GetEnumerator 应该要么返回实现 IEnumerator 的类型,要么声明 IEnumerator 中定义的所有方法.

前者是一些枚举中用,如数组、List等.后者,是普通的,如递增、递减,只要中间的条件符合.做些实验,练习练习就明白了.

foreach是for循环的一种简便写法,但是只有实现了iterator的对象才能使用foreach循环.

网站首页 | 网站地图
All rights reserved Powered by www.mydy.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com