A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王光保 黑马帝   /  2011-7-14 14:39  /  3770 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

foreach和for循环哪个使用的性能高?

6 个回复

正序浏览
bucuo........
回复 使用道具 举报
黑马网友  发表于 2011-7-17 12:52:27
地板
foreach比较快,数据少的时候没什么差异,但是多了就不一样了。简单的用循环来输出一百万次就可以看到很大差异。
回复 使用道具 举报
黑马网友  发表于 2011-7-15 10:43:04
报纸
第一,不能修改的是foreach引用变量,因为它是引用的,对它的修改没有意义也没有作用,它就像一个c/c++指针那样对集合中的元素进行指向引用;我们能通过引用看到它,但是没有能力动它。

第二,in之前的变量是引用变量,但in之后的集合确是实实在在的,所以可以对它操作,像.ADD();REMOVE()等方法可以使用。

第三,foreach引用变量大概是通过地址指向后面的集合当修改了集合的元素时,地址可能发生某种改变,所以不跳出循环继续遍历时,就可能出现引用找不到的情况。

某些情况不合适用foreach
1.只读:访问的元素不能被赋值,比如元素的自增等
2.单一结构:不可能同时遍历两个结构,比如比较两个数组
3.单一元素:只适合单一的元素读取
4.单向:只能向前单个元素的迭代
5.需java5支持:不要在java5前使用该语法
回复 使用道具 举报
黑马网友  发表于 2011-7-14 22:29:41
板凳
个人认为一般情况foreach要比for性能强,同时也有局限性,比如引用数组或者集合的索引就不行了。for在循环时要判断是否越界,而foreach是单纯的迭代。foreach不但性能好,而且编程简单容易看懂所以今后应当尽量能用foreach就each
回复 使用道具 举报
黑马网友  发表于 2011-7-14 19:14:45
藤椅
我晕,应该for性能高些,foreach 是for的扩展,那么定是牺牲了某些资源而做到foreach,只能说有可能自己用for编写类似于foreach的功能时,效率可能没原本的foreach高。以上是个人理解。望牛人斧正
回复 使用道具 举报
黑马网友  发表于 2011-7-14 15:28:00
沙发

我认为一样的我认为一样的

我认为一样的我认为一样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马