java相关:老生常谈foreach(增强for循环)和for的区别

发布于 2020-8-18|

复制链接

下面小妖就为大家带来一篇老生常谈foreach(增强for循环)和for的区别。小妖觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小妖过来看看吧

首先说一下foreach有的也叫增强for循环,foreach其实是for循环的一个特殊简化版。再说一下foreach的书写格式:for(元素类型  元素名称 : 遍历数组(集合)(或者能进行迭代的)){语句 }foreach虽然是for循环的简化版本,但是并不是说foreach就比for更好用,foreach适用于循环次数未知,或者计算循环次数比较麻烦情况下使用效率更高,但是更为复杂的一些循环还是需要用到for循环效率更高。我们看看下面的例子:

```xhtml

public static void main(String[] args) {

List arr = new ArrayList();

arr.add("你好");

arr.add("我好");

arr.add("大家好");

//foreach循环

for(String str : arr){   //这里的str就是为了获取每次循环的arr中的值

System.out.println(str);     //就相当于 String str=arr[i]

}

}

```

但是相比较之下我们用for循环输入就略显麻烦

```xhtml

public static void main(String[] args) {

List arr = new ArrayList();

arr.add("你好");

arr.add("我好");

arr.add("大家好");

//for循环

for(int i=0;i除了这种普通的集合还可以对像map这种键值对使用例如:

```xhtml

public static void main(String[] args) {

Map mapstr = new HashMap();

mapstr.put("王", "男");

mapstr.put("李", "男");

mapstr.put("张", "女");

//entrySet方法是为了获取键值对的集合

for(Map.Entry s : mapstr.entrySet()){ //这里的Map.Entry其实就是一个类型 用来表示键值对的类型

System.out.println("key="+s.getKey()); //这里其实还是相当于 s=maostr.entrySet,只不过s存储的是键值对。

System.out.println("value="+s.getValue()); //所以可以用get方法获取出来存储的键值对。

}

}

```

另外foreach不支持在循环中添加删除操作,因为在使用foreach循环的时候数组(集合)就已经被锁定不能被修改,否则会报出java.util.ConcurrentModificationException异常例如:

```xhtml

public static void main(String[] args) {

List arr = new ArrayList();

arr.add("你好");

arr.add("我好");

arr.add("大家好");

//foreach循环

for(String str : arr){

System.out.println(str);

arr.add("1"); //对arr进行添加

}

}

```

java foreach和for循环区别_java相关:老生常谈foreach(增强for循环)和for的区别相关推荐

  1. java for循环迭代_JAVA中的for-each循环与迭代

    在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable接口(位于java.lang包中),实现这个接口允许对象成为 "fo ...

  2. java switch case多个条件_JAVA基础程序设计之判断与循环

    1 基本概念 一般来说程序的结构包含三种情况: 顺序结构:至上而下逐行执行,一条语句执行完之后继续执行下一条,直到程序结束.选择结构:根据条件的成立与否,再决定执行哪些语句,例如 if-else- 语 ...

  3. java字面量和符号引用_java中字面量,常量和变量之间的区别(附:Integer缓存机制)...

    一.引子 在各种教科书和博客中这三者经常被引用,今天复习到内存区域,想起常量池中就是存着字面量和符号引用,其实这三者并不是只在java中才有,各个语言中都有类似的定义,所以做一下总结,以示区分. 二. ...

  4. java中属性文件读取案例_java相关:Spring中属性文件properties的读取与使用详解

    java相关:Spring中属性文件properties的读取与使用详解 发布于 2020-6-3| 复制链接 摘记: Spring中属性文件properties的读取与使用详解实际项目中,通常将一些 ...

  5. java jar包和war包_java中jar包和war包之间有什么区别

    原标题:java中jar包和war包之间有什么区别 jar包 简单地说,JAR(Java Archive)是一种包文件格式.JAR文件具有.jar扩展名,可以包含库.资源和元数据文件. 本质上,它是一 ...

  6. java实现excel文件上传_java相关:SpringMVC下实现Excel文件上传下载

    java相关:SpringMVC下实现Excel文件上传下载 发布于 2020-6-21| 复制链接 摘记: 在实际应用中,经常会遇到上传Excel或者下载Excel的情况,比如导入数据.下载统计数据 ...

  7. java 循环依赖_java – 如何在Gradle中解决循环依赖

    我正在将Java项目从Ant迁移到Gradle.我认为最好的解决方案是使用Gradle的多项目支持,但我找不到摆脱循环依赖的方法. 原始项目设置为具有以下布局: - project/ - common ...

  8. java动态创建bean的意义_java相关:Spring Boot如何动态创建Bean示例代码

    java相关:Spring Boot如何动态创建Bean示例代码 发布于 2020-3-20| 复制链接 摘记: 前言本文主要给大家介绍了关于Spring Boot动态创建Bean的相关内容,分享出来 ...

  9. java list按照某个字段排序_java相关:List对象去重和按照某个字段排序的实现方法...

    java相关:List对象去重和按照某个字段排序的实现方法 发布于 2020-6-8| 复制链接 下面小妖就为大家带来一篇List对象去重和按照某个字段排序的实现方法.小妖觉得挺不错的,现在就分享给大 ...

最新文章

  1. 在node.js中一次读取一行文件?
  2. zabbix监控交换机出图断断续续
  3. 65.Java语法糖
  4. mysql 全连接问题_mysql 解决全连接问题
  5. python线性输出_python sklearn-02:线性回归简单例子1
  6. 【线上分享】短视频出海 — 用户体验衡量关键指标与优化策略
  7. 《Go 语言程序设计》读书笔记 (三) 方法
  8. 容斥 - HDU 4135 Co-prime
  9. 使用单元测试工具TestDriven.NET调试程序
  10. python求众数程序_求众数(python实现)
  11. http请求头中包含未编码中文时webapi self host崩溃
  12. 【React Native开发】React Native控件之RefreshControl组件具体解释(21)
  13. 智能静止存在检测方案,5.8G雷达传感技术,人体存在感应雷达应用
  14. 破除java网页禁止复制_网页内容禁止复制怎么办?
  15. java html转pdf 无法支持中文_java转pdf(html转为pdf),解决中文乱码,标签不规范等问题...
  16. 【笔记】下单但未支付的订单倒计时自动取消逻辑实现
  17. 关于Win10已设置默认打开方式的清除方法
  18. 古典微分几何 近代微分几何资料
  19. Excel 斜线表头制作方法
  20. 数据线的问题--极度的悲催

热门文章

  1. workbook加载文件路径_通过Workbook.XML 修复Excel自定义名称
  2. java猜数字小游戏_Java实现简单猜数字小游戏
  3. ant vue 兼容性问题_ant design for vue 关于table的一些问题
  4. 移动端UC /QQ 浏览器的部分私有Meta 属性
  5. 精心挑选的23款美轮美奂的 jQuery 图片特效插件
  6. Flexible 弹性盒子模型之CSS justify-content 属性
  7. 如何隐藏 video 元素的下载按钮
  8. React使用的扩展
  9. Shadow DOM及自定义标签
  10. 二叉树的递归遍历与复制