foreach与for

在学习ArrayList时看到了一个不熟悉的方法,乍一看以为是for方法,但与for方法却有所不同,这种方法叫做foreach。接下来我们便深入的了解一下foreach方法。

首先foreach其实就是一种更加简洁的for循环,foreach循环用于遍历数组或者是集合中的元素,语法格式与for方法也有所不同:

for(元素类型变量 : 变量){执行语句
}

与for循环相比,foreach循环不需要获得容器的长度,也不需要++来访问各个元素,但是foreach会自动的遍历容器中的每个元素,例如:

public class Example{public static void main(String[] args){String[] examples = {"我爱","学习","Java"};for (String example : examples){System.out.println(example);}}
}

运行结果为:

我爱
学习
Java

当我在工具中打上foreach时发现foreach这个单词并没有变色,发现foreach并不是Java中的关键字,而只是一种for语句的简化版本,在遍历数组、集合时foreach比for要简单便捷一些。那么问题来了,既然foreach更简便,为什么没有淘汰掉for循环方法呢,这就要说到foreach在使用过程中的局限性了。

在使用foreach遍历集合和数组时,只能访问集合中的元素,却不能对其中的元素进行修改,例如:

public class Example2{public static void main(String[] args){String[] strs = {"我爱","学习","Java"};for(String str : strs){str = "不爱";}System.out.println(str[0]+","+str[1]+","+str[2]);}}

给出的结果会报错,但是用for方法该元素的话却可以成功运行

public class Example2{public static void main(String[] args){String[] strs = {"我爱","学习","Java"};for(int i=0;i<strs.length;i++){strs [i]= "不爱";}System.out.println(strs[0]+","+strs[1]+","+strs[2]);}}

运行结果为:

不爱,不爱,不爱

可见,在用foreach时并不能修改元素的值,因为想修改的元素只是指向了一个新的字符串,可是在普通的for循环中,可以通过索引引用数组中的元素并进行修改。

foreach与for相关推荐

  1. 浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )

    1. foreach 函数 foreach 函数定义如下: $(foreach <var>,<list>,<text>) 函数的功能是:把参数 <list&g ...

  2. 2021年大数据常用语言Scala(二十一):函数式编程 遍历 foreach

    目录 遍历  foreach 使用类型推断简化函数定义 使用下划线来简化函数定义 遍历  foreach 之前,学习过了使用for表达式来遍历集合.我们接下来将学习scala的函数式编程,使用fore ...

  3. [JS] for-each和map()的区别

    先说下for-each与for-of还有for-in的区别. for-of和for-in都是对对象操作的,而for-each和map()是对数组进行操作的. for-in的使用:对于一个数组里的每一个 ...

  4. java 增强for循环(foreach)

    学而时习之,温故而知新. java的增强fou循环(foreach) 是java5的新特征之一 foreach的循环对象一般是一个集合,List.ArrayList.LinkedList.Vector ...

  5. Scala中的foreach方法和map方法

    两个方法的共同点在于(foreach和map):都是用于遍历集合对象,并对每一项执行指定的方法. 而两者的差异在于:foreach无返回值(准确说返回void),map返回集合对象. 结论就是:for ...

  6. Java数组传参sql_Java中如何传一个数组作为筛选条件操作数据库(sql中foreach的使用)...

    实现步骤: 1. 把前端获取到的要删除的数据的nId,以逗号作为分隔符,组成一个da(其中checkStatus.data.length和checkStatus.data[i].nId是layui里面 ...

  7. java foreach delete_Java CopyOnWriteArrayList forEach()用法及代码示例

    CopyOnWriteArrayList的forEach()方法为Iterable的每个元素执行给定的操作,直到已处理完所有元素或该操作引发异常. 用法: public void forEach (C ...

  8. java foreach order_Java 8流中的forEach vs forEachOrdered

    我知道这些方法的执行顺序不同,但在所有测试中,我都无法实现不同的执行顺序. 例子: System.out.println("forEach Demo"); Stream.of(&q ...

  9. ecshop模板smarty foreach详解 [ECshop]

    {foreach},{foreachelse} {foreach} 用于像循环访问一个数字索引数组一样循环访问一个关联数组,与仅能访问数字索引数组的{section}不同,{foreach}的语法比 ...

  10. php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?

    foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...

最新文章

  1. create 执行存储过程报错出现符号_年薪百万之路--第四十天 存储引擎
  2. 卡巴斯基文件服务器,卡巴斯基更新服务器的解决方案
  3. 深入理解 ajax_xhr 对象
  4. 程序员职场:拥有一个学位将会在你的职业生涯中更加顺利!
  5. 在虚拟机上运行vxWorks
  6. 微信公共开发人员文档 阅读笔记
  7. 【Java】Java8新特性Lambda表达式和Stream API
  8. LeetCode 235. 二叉搜索树的最近公共祖先(递归)
  9. 【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)
  10. excel2010服务器打开闪退
  11. [论文阅读][CVPR2021]EventZoom: Learning to Denoise and Super Resolve Neuromorphic Events
  12. 常见python基础面试题_常:汉字常的意思/解释/字义/来源 - 新华字典
  13. 题目0073-双十一
  14. 项目管理sod_Microsoft Visual SourceSafe(项目文件管理) V6.0 最新中文版(图文)
  15. rpm安装包安装方式
  16. python数据分析入门【二】 --- 数据处理
  17. Request和response的用法总结
  18. 【编译原理】 实验三 LL(1)分析法(LL1分析表的自动生成)
  19. 19个GIS相关地理信息数据
  20. 利用抖音Cookie充值接口提取支付链接,调起原生微信h5支付宝h5支付

热门文章

  1. 炮炮兵可爱桌面壁纸 高清
  2. 西电2014计算机研究生,西电2014年计算机研究生833考试大纲
  3. OpenCV进阶(6)基于OpenCV的深度学习人体姿态估计之多人篇
  4. 出租房管理(1) - 开发背景 - 软件开发环境 - 采用技术
  5. 【HomeKit】从HomeKit架构层细化到HomeKit ADK集成
  6. html 苹果xr媒体查询,iPhoneX 媒体查询适配的方法教程
  7. Uipath如何获取outlook邮件附件/特定类型附件
  8. N-Case 律师事务所管理系统功能介绍
  9. luma.led_matrix库在树莓派上的安装
  10. MySql修改表名的两种方法