概述
增强型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循环)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复