Java for循环和foreach循环区别

Java for循环和foreach循环区别一 区别 1 for 循环是基于下标 偏移量 来定位的循环 2 foreach 是基于指针直接移动 地址运算 的循环 3 foreach 与 for 循环的明显差别在于 foreach 循环时循环对象 数组 集合 被锁定 不能对循环对象中的内容进行增删改操作 二 两者效率比较对于通过下标访问的数据结构 例如数组 Arraylist 使用下标访问的 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] 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207665.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午1:22
下一篇 2026年3月19日 下午1:22


相关推荐

  • 构建算法模型_模型与算法有什么不同

    构建算法模型_模型与算法有什么不同文章目录1.情感词典内容2.情感倾向点互信息算法(SO-PMI)算法点互信息算法PMI情感倾向点互信息算法SO-PMI3.构建情感词典1.导入项目2.构建情感种子词3.使用TF-IDF方便构建情感种子词4.构建专业词典的效果与使用方法5.其他说明1.情感词典内容情感词典构建方法归为三类,分别是:词关系扩展法、迭代路径法和释义扩展法情感极性:正向、负向;表示正面情感(开心愉快)或负面情感(伤心愤怒)情感极值:情感倾向(微笑、开怀大笑、手舞足蹈虽然都可以表示开心,但有不一样的

    2022年8月23日
    8
  • Web安全原理剖析(四)——报错注入攻击[通俗易懂]

    Web安全原理剖析(四)——报错注入攻击[通俗易懂]报错注入攻击

    2022年9月30日
    4
  • AI_Agents(四)_AI智能体工具使用设计模式

    AI_Agents(四)_AI智能体工具使用设计模式

    2026年3月16日
    2
  • Intellij IDEA 实用插件

    Intellij IDEA 实用插件1.前言从2020年JVM生态报告解读可以看出IntellijIDEA目前已经稳坐JavaIDE头把交椅。而且统计得出付费用户已经超过了八成(国外统计)。IDEA的优良设计保证了我的生产力,也是我情愿为之付费的软件之一。今天把我自己经常用的一些插件拿出来分享一波。同时欢迎加入[微信圈子]SpringForAll社区交流编程经验。2.IDEA插件分享之前我们来看看其插件体系。IntellijIDEA大部分功能是通过插件集成进来的。默认情况下已经集成了很多插件。你可以…

    2025年5月23日
    8
  • 如何删除LDSGameMaster[通俗易懂]

    如何删除LDSGameMaster[通俗易懂]如何删除LDSGameMaster背景介绍方法一方法二背景介绍最近不小心下载安装了鲁大师,卸载之后,C盘中仍有一个名为LDSGameMaster的文件夹。虽然很小,之后18M,但是一定要删除掉,否则心里很不舒服。方法一百度告诉我,解决这个问题很简单。这个文件夹中有个uninstall,运行之后就没有了。但我没有发现我的文件夹中有这么一个东西。这个方法不提。方法二删除之后,提示:操作无法…

    2022年6月13日
    89
  • Java程序设计(基础)- 流程控制

    Java程序设计(基础)- 流程控制

    2021年7月21日
    65

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号