增强for循环是jdk1.5出现的新功能

1、增强for循环的作用

简化了迭代器的书写格式(注意:增强for循环底层还是使用了迭代器遍历)

2、增强for循环的格式

for(数据类型  变量名:遍历的目标){

}

3、增强for循环的适用范围

如果实现了 Iterable 接口或者数组对象都可以使用增强for循环

 package com.dhb.pattern;

 import java.util.Iterator;

 /**
* @author DSHORE / 2018-6-8
*
*/
class MyList implements Iterable<String>{
Object[] arr=new Object[];
int index=;//当前指针
public void add(Object o){
arr[index++]=o;
}
public Iterator<String> iterator() { return new Iterator<String>() {//new Iterator<String>():匿名内部类 Iterator接口,抽象的不能直接new
int cursor=;//指针
//hasNext()、next()、remove()都是实现new Iterator<String>()中的方法
public boolean hasNext() {
return cursor<index;
}
public String next() { return (String)arr[cursor++];
}
public void remove() { }
};//结束匿名内部类的符号“;”
}
}
public class Demo2 {
public static void main(String[] args) {
MyList list=new MyList();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
for (String string : list) {
System.out.print(string+",");//返回结果:张三,李四,王五,赵六,
}
}
}

4、增强for循环需要注意的事项

1、增强for循环底层也是使用迭代器获取的,只不过获取迭代器是由jvm完成,不需要我们获取迭代器,索引在使用增强for循环遍历元素的过程中,不准使用集合对对象 对集合元素经行修改
    2、迭代器遍历元素和增强for循环的区别:使用迭代器遍历元素时可以删除集合元素,而增强for循环遍历集合元素时,不能调用迭代器里面的remove方法删除元素
    3、普通for循环与增强for循环的区别:普通for循环可以没有变量目标,而增强for循环一定要有变量目标

5、实例

  package com.dhb.pattern;

  import java.util.HashSet;
/**
* @author DSHORE / 2018-6-8
*
*/
public class Demo3 {
public static void main(String[] args) {
//集合
HashSet<String> set=new HashSet<String>();
set.add("狗剩");
set.add("铁蛋");
set.add("哮天神犬"); Iterator<String> it=set.iterator(); //使用迭代器遍历set集合
while(it.hasNext()){
System.out.println(it.next());
} for(String s:set){//使用增强for循环遍历
System.out.println(s);
}    //数组
int[] arr={,,,};    
for (int i = ; i < arr.length; i++) {//普通for循环遍历
System.out.println(arr[i]);
}
    
for (int i : arr) {//增强for循环遍历
System.out.println(i);
}
}
}

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9156896.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

java基础39 增强for循环(也叫foreach循环)的更多相关文章

  1. Java基础-程序流程控制第二弹(循环结构)

    Java基础-程序流程控制第二弹(循环结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 流程控制有三种基本结构:顺序结构,选择结构和循环结构.一个脚本就是顺序结构执行的,选择结 ...

  2. JAVA基础语法:常用功能符以及循环结构和分支结构(转载)

    3.JAVA基础语法:常用功能符以及循环结构和分支结构 1.常用功能符 注释 ("文字"是被注释的部分) //文字 单行注释 /文字/ 多行注释 算术运算符 + - * / / 整 ...

  3. Java基础之增强for循环

    平时大家for循环应该用的不少,特别是增强for循环,简单快捷.但是在增强for中做删除操作,却会抛出java.util.ConcurrentModificationException,一起来看下. ...

  4. Java基础(39):数据的四舍五入、去整、产生随机数---Math类的应用

    使用 Math 类操作数据 Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: M ...

  5. Java for循环和foreach循环的性能比较

    就是有些人循环用的是普通for循环,有些人用的是foreach循环,它们之间有什么区别?应该在什么时候使用这两种循环了? 两种循环的语法格式: 普通for循环语法: for (int i = 0; i ...

  6. for循环和foreach循环遍历集合的效率比较

    先上代码 package com.test; import java.util.ArrayList; import java.util.LinkedList; import java.util.Lis ...

  7. 程序控制结构及for循环、foreach循环、迭代器

    结构化程序设计 三种基本控制结构:顺序结构.选择结构.循环结构. 在这种思想的指导下,发展出了面向过程编程方式.面向过程编程的核心是算法+数据结构.算法可以用顺序.选择.循环这三种基本控制结构来实现. ...

  8. 使用for循环还是foreach循环?

    很多时候我们很自然的认为,for循环的时候使用foreach和原来的for循环用下标的方式遍历是相同的. 而且因为foreach循环写法简单,很容易理解,而且少去了很多麻烦的变量,所以估计在学会使用f ...

  9. JavaScript的map循环、forEach循环、filter循环、reduce循环、reduceRight循环

    1.map循环 let arr=[1,2,3,4]; arr.map(function(value,key,arr){ //值,索引,数组(默认为选定数组) return item; //如果没有re ...

随机推荐

  1. BZOJ 4802 欧拉函数

    4802: 欧拉函数 Description 已知N,求phi(N) Input 正整数N.N<=10^18 Output 输出phi(N) Sample Input 8 Sample Outp ...

  2. linux下tar.gz、tar、bz2、zip等解压缩、压缩命令

    转至:http://www.jb51.net/LINUXjishu/43356.html 说明:Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令 ...

  3. jsp中的js中获取项目路径的方法

    在jsp中加上 <% String path = request.getContextPath(); String basePath = request.getScheme()+":/ ...

  4. configServer的高可用

    1.利用RabbitMQ或者是Kafka来搭建集群. 2.利用nginx来进行 3.利用Eureka来搭建

  5. AES-NI指令集

    对于intel的AES-NI新指令集,需要i5处理器及以上的相关硬件支持.在编译时,可能会出现 /usr/lib/gcc/x86_64-linux-gnu/4.8/include/wmmintrin. ...

  6. linux tmux命令小结

    http://note.youdao.com/noteshare?id=f1be507b4be27e53684b46a1424746b5

  7. 题解【bzoj2653 middle】

    Description 给你一个序列,每次询问给出四个数 \(a,b,c,d\),求所有区间 \([l,r]\) 满足 \(l \in [a,b], r \in [c,d]\) 的中位数的最大值.强制 ...

  8. jenkins权限管理,不同用户显示不同项目

    1.安装Role-based Authorization Strategy插件 系统管理-管理插件-可选插件中安装Role-based Authorization Strategy 安装后重启jenk ...

  9. Centos下Vim编辑器基本配置

    设置 Vim编辑环境 配置 有两种方式: 1,是在/etc/vimrc 进行设置,这种设置方法会作用与所有登录到Linux环境下的用户.不建议使用. 2,在用户登录的 ~ 目录下创建一个 .vimrc ...

  10. Git3:Git分支

    目录 一.概念 二.创建与合并分支 1.创建分支原理分析 2.创建分支语法 三.解决冲突 四.分支管理策略 1.保留分支历史 2.分支管理原则 五. bug分支 六.推送和拉取远程分支 一.概念 分支 ...