我是靠谱客的博主 时尚哈密瓜,最近开发中收集的这篇文章主要介绍foreach(增强型for循环),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

增强型for循环

何为增强型for循环呢,在我第一次看到for中竟然可以添加其他的参数时,感觉到比较困惑,我看到的内容是:

int[] a = {1,2,3}
for(int i : a){
......
}

看到的时候整个人是困惑的,这样一个循环是什么意思呢?
通过观察代码含义后得知此循环叫增强型for循环,是用于数组和集合(Collection)中的for循环,可以实现数组或集合的遍历,其本质是通过for循环实现对迭代器的调用,下面是我对该内容的整理:

foreach的语法:

for(元素类型 元素名称 : 遍历数组(集合)(或者能进行迭代的)){

}

foreach在作用上和for循环在循环数组时是相同,都是可以实现遍历数组的目的,但二者之间略有差别。

for循环遍历数组本质上是遍历数组下标,即先找到索引,再连接数组元素,而foreach循环是基于Iterator来实现的,所以foreach是每次访问该元素的下一个元素的地址,来实现的直接元素访问。

因为for循环实现了遍历数组下标,所以可以直接的对元素值进行删除,但因其地址并未被删除,所以可以直接将后元素的值对前元素进行赋值,即可另值消失。

因为foreach是基于Iterator实现的,直接访问的是下一个元素的地址,所以在其中无法实现直接的数组元素删除,需要借助Iterator中定义的remove方法来对某元素实现删除,该删除直接删除的为元素地址,但在删除元素后,foreach中定义的某变量值会发生改变,当其值发生改变时会造成安全隐患,如果循环继续运行,则Java会抛出异常。

所以我们通常是不可以使用foreach来实现元素的删除的,如果需要将元素进行删除时,需要采用for循环,而不能采用foreach循环。

我们讨论了二者之间差别,那我们也要考虑他们的效率问题:

需要循环数组结构的数据时,建议使用普通for循环,因为for循环采用下标访问,对于数组结构的数据来说,采用下标访问比较好。

需要循环链表结构的数据(集合)时,一般不要使用普通for循环,这种做法很糟糕,数据量大的时候有可能会导致系统崩溃。

所以当我们循环集合时采用foreach效率会有所提高,当我们循环数组时,二者效率相差不多,为方便删除数组元素,可以使用标准的for循环。

最后

以上就是时尚哈密瓜为你收集整理的foreach(增强型for循环)的全部内容,希望文章能够帮你解决foreach(增强型for循环)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部