专业的JAVA编程教程与资源

网站首页 > java教程 正文

简单聊聊JAVA中for foreach区别

temp10 2025-01-10 17:14:55 java教程 13 ℃ 0 评论

一、区别

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

简单聊聊JAVA中for foreach区别

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循环,数据量大的时候有可能会导致系统崩溃。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表