900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Java for循环和foreach循环区别

Java for循环和foreach循环区别

时间:2021-08-23 20:40:11

相关推荐

Java for循环和foreach循环区别

一、区别

1)for循环是基于下标(偏移量)来定位的循环。

2)foreach是基于指针直接移动(地址运算)的循环。

3)foreach与for循环的明显差别在于foreach循环时循环对象(数组、集合)被锁定,不能对循环对象中的内容进行增删改操作。

二、两者效率比较

对于通过下标访问的数据结构。例如数组,Arraylist 使用下标访问的for循环效率本身就很高。所以foreach这种指针直接移动的效率可能甚至不如通过下标访问。但差别不会太大

但对于链式结构LinkedList,for基于下标访问会每次从头查询,最好不要使用for。foreach循环使用指针直接偏移的高效的地址运算,效率会高非常多,差距也很大。链表循环超过10万次for循环可能会直接卡死,而foreach仍然只需要几毫秒。

例:普通for循环

package ch02;import java.util.Arrays;public class Test {public static void main(String[] args) {String[] str = {"a","b","c"};for (int i = 0; i < str.length; i++) {if(str[i]=="b") {str[i]="d";}}System.out.println(Arrays.toString(str));}}//运行结果:[a, d, c]

增强for循环:

package ch02;import java.util.Arrays;import java.util.Iterator;public class Test {public static void main(String[] args) {String[] strs = {"a","b","c"};for (String str : strs) {if(str=="b") {str="d";}}System.out.println(Arrays.toString(strs));}}//运行结果:[a, b, c]

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

需要循环链表结构的数据时,一定不要使用普通for循环,数据量大的时候有可能会导致系统崩溃。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。