目录

定义

代码演示

总结


定义

普通for循环

步骤:初始表达式;条件表达式;递增表达式)

有时候递增表达式也可以省去,一般是在使用Iterator迭代时(Iterator的hasNext方法判断时,可以省去递增表达式)。这种for循环很常用。

增强的for循环:

这种for循环的内部是调用了Iterator实现的(实现了Iterator接口),和Iterator遍历效果是一样(你可以断点调试跟踪代码看看内部原理),主要用于遍历数组、集合的每一个元素。

优点:1.写法简便    2.无需获得数组、集合长度 3.无需索引来访问元素
缺点:1.不能在循环动态删除元素和获取元素下标 2.在多线程下使用增强for来改变元素会出错误,因为通过迭代器实现的增强for对该数组或集合会现有一个拷贝,改变元素是会导致不能正常遍历数组和集合。所以说多线程下增强for循环是不安全不推荐用。
区别:(1)对于非集合类(没有实现 Iterable接口的)的数组遍历,增强型for循环和普通循环遍历原理相同,效率基本相同
           (2)对于集合类(实现了Iterable接口的),增强型for循环的遍历其本质就是迭代器 iterator的遍历,和普通循环遍历相比,各自有自己适用的场景,比如说普通for循环比较适合List类(数组类)遍历通过下标查找数据的,而增强型for循环则比较适合链表结构的集合的遍历。

代码演示

1.遍历集合类

  public static void main(String[] args) {person[] listtest =new person[5000000];int [] a= new int[600000];for (int i = 0; i < 600000; i++) {a[i]=i;}int b=0;long ts=System.currentTimeMillis();for(int i=0;i<a.length;i++){b=a[i];}System.out.println("普通for的耗用时间     "+(System.currentTimeMillis()-ts));long ts1=System.currentTimeMillis();for(int i:a){b=i;}System.out.println("增强for的耗用时间     "+(System.currentTimeMillis()-ts1));for(int i=0;i<5000000;i++){listtest[i]= new person("狗蛋");}Object p=null;long start=System.currentTimeMillis();for(int i=0;i<listtest.length;i++){p=listtest[i];}System.out.println("普通for的耗用时间     "+(System.currentTimeMillis()-start));long start1=System.currentTimeMillis();for(Object o:listtest){p=o;}System.out.println("增强for的耗用时间     "+(System.currentTimeMillis()-start1));}}class person{String name;public person(String name) {super();this.name = name;}}

输出结果:
普通for的耗用时间 10
增强for的耗用时间 11
普通for的耗用时间 5
增强for的耗用时间 4

2.遍历非集合类

  List<String> list = new ArrayList<String>();for (int i = 0; i < 500000; i++) {list.add("翠芬");}long start2 = System.currentTimeMillis();String str = null;for (int i = 0; i < list.size(); i++) {str = list.get(i);}System.out.println("普通for循环+get方法: "+ (System.currentTimeMillis() - start2));long start3 = System.currentTimeMillis();for (String str1 : list) {str=str1;}System.out.println("增强for循环+赋值:"+ (System.currentTimeMillis() - start3));List<String> list1 = new LinkedList<String>();for (int i = 0; i < 50000; i++) {list1.add("菜花");}long start4 = System.currentTimeMillis();String str1 = null;for (int i = 0; i < list1.size(); i++) {str1=list1.get(i);}System.out.println("普通for循环+get方法: "+ (System.currentTimeMillis() - start4));long start5 = System.currentTimeMillis();for (String str2 : list1) {str1=str2;}System.out.println("增强for循环+赋值:"+ (System.currentTimeMillis() - start5));

输出结果:
普通for循环+get方法: 8
增强for循环+赋值:8
普通for循环+get方法: 893
增强for循环+赋值:2

总结

相对于for(;;)而言  增强for循环有两个好处:

1.写起来简单

2.遍历集合、容器简单

普通For循环和增强For循环相关推荐

  1. 增强for循环_增强for循环实际用法

    今天写代码需要进行批量更改状态, 想了下如何实现, 用for循环是非常不错的,代码: //批量开启状态@RequestMapping("/batchOpen")public Res ...

  2. 学透for循环-传统for循环与增强for循环

    传统for循环遍历数组: public class for01{public static void main(String[] args){//定义一个长度为5的数组int nums = new i ...

  3. 关于普通for循环和增强for循环

    什么时候使用普通for循环,什么时候使用增强for循环 首先,增强for循环的写法比普通for循环简便,不过我们还得考虑效率. --->首先,我们先看结论: 对于基本数组类的遍历,两者的效率是相 ...

  4. 增强型的for循环linkedlist_Java: 增强for循环针对list的时候,是严格按照list的顺序依次遍历的吗?...

    是的 首先写一个测试代码: ` private void for_Test(){ List list =new ArrayList<>(); list.add(1); list.add(2 ...

  5. 增强for循环,Map,集合应用

    3. 增强for循环 1) 作用: 对存储对象的容器进行迭代 2)  jdk5以前怎么迭代 3) 增强for循环迭代数组 String [] arr = {"a", "b ...

  6. 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型

    一.eclipse工具的使用 1. java代码的位置 1) 选择工作空间 workspace  选择一个文件夹存放程序(代码) 不要用中文和空格 2) 新建一个java 工程(Project) 3) ...

  7. 第三次学JAVA再学不好就吃翔(part84)--增强for循环

    学习笔记,仅供参考,有错必纠 文章目录 增强for循环 增强for循环 增强for循环概述 增强for循环可以简化数组和Collection集合遍历. 格式 for(元素数据类型 变量 : 数组或者C ...

  8. 简单的使用一下增强for循环

    目录 1. 增强for循环的格式: 2. 增强for循环的基本概念 3. 增强for循环要注意的事项 1. 增强for循环的格式: for(数据类型 变量名 :遍历的目标){ } //数据类型 变量名 ...

  9. JAVA(4)学习笔记:JVM虚拟机上的栈、大驼峰命名法和小驼峰命名法、实参和形参、重载方法、调用栈、递归练习(汉诺塔+斐波那契数列)、数组的定义、数组的初始化、增强for循环。

    接上次的博客:JAVA学习(3)--知识整理以及一些简单程序(猜数字游戏.求各种自幂数.求出一个数字的二进制位中1的个数.获取一个数二进制序列中所有的偶数位和奇数位.求公约数的多种实现方式.输入密码程 ...

最新文章

  1. 服务器技术综述(一)
  2. 熟悉的亲切-老外婆教做的豌豆蔬菜汤
  3. ORACLE常用的动态性能视图
  4. SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
  5. ios 静音模式_静音设计模式
  6. 【ZOJ - 3778】Talented Chef(贪心)
  7. [root@dg1 ~]# su - grid ---切换到grid用户
  8. LeetCode:Remove Duplicates from Sorted List I II
  9. Linux之系统操作命令
  10. 计算机组成原理学习记录-唐朔飞
  11. 进销存excel_干货分享,上班族必看。EXCEL轻松搞定制作进销存报表
  12. 腾讯游戏学院专家:如何避免出海游戏服务器水土不服?
  13. 关于用指针实现输入字符串以单词为元素反转输出思路
  14. ICPC训练联盟2021寒假冬令营(5)(部分题解):
  15. 微信小程序 —— 保留两位小数
  16. Pearson,Kendall和Spearman三种相关分析方法的异同
  17. 马哥SRE第五周课程作业
  18. html插入flash时钟,ppt如何添加Flash时钟插件
  19. 第六讲:BBdoc软件版本升级与文档内容索引更新操作
  20. OpenCV——归一化函数normalize

热门文章

  1. Android 实现SOS闪光灯效果
  2. 聊聊 Pulsar: Pulsar 的核心概念与基础架构
  3. 米聊关闭服务器怎么找网站,米聊宣布关闭服务器 具体安排如下
  4. 勇者斗恶龙C++(附注释)
  5. 苹果开发者帐号(Company)申请流程
  6. 天梯赛练习——L2-028 秀恩爱分得快
  7. 对不起用计算机代码怎么说,一个程序员的自白书:“对不起,我做错了”
  8. 有道云笔记不需要开通会员即可导出思维导图的方法
  9. Spark Standalone架构及安装部署
  10. 10分钟HTML5入门基础知识(一)