增强的for循环。

缺点:

  对于数组。不能方便的訪问下标值。

  对于集合,与使用Interator相比。不能方便的删除集合中的内容(在内部也是调用Interator).

除了简单遍历并读取当中的内容外。不建议使用增强的for循环。

增强for循环和传统for循环的差别:

传统for循环能够完毕对语句运行非常多次,由于能够定义控制循环的增量和条件。

增强的for循环是一种简化的形式,

它必须有遍历的目标,该目标要么是数组。要么是collection单列集合,对数组的遍历假设不过获取数组的元素,能够用

增强的for循环。假设要对数组的角标进行操作,建议使用传统for。

一、遍历数组

语法为:

for (Type value : array) {

expression value;

}

//曾经我们这样写:

void Function ()

{

int[] array = {1,2,5,8,9};

int total = 0;

for (int i = 0; i < array.length; i++)

{

total += array[i];

}

System.out.println(total);

}

//如今我们仅仅需这样写(和以上写法是等价的):

void Function ()

{

int[] array = {1,2,5,8,9};

int total = 0;

for (int n : array)

{

total += n;

}

System.out.println(total);

}

这样的写法的缺点:

显而易见。for/in(for each)循环自己主动控制一次遍历数组中的每个元素。然后将它赋值给一个暂时变量(如上述代码中的int n),然后在循环体中可直接对此暂时变量进行操作。

这样的循环的缺点是:

1. 仅仅能顺次遍历全部元素。无法实现较为复杂的循环。如在某些条件下须要后退到之前遍历过的某个元素;

2. 循环变量(i)不可见,假设想知道当前遍历到数组的第几个元素。仅仅能这样写:

int i = 0;

for (int n : array) {

System.out.println("This " + i + "-th element in the array is " + n);

i++;

}

二、遍历集合

语法为:

for (Type value : Iterable) {

expression value;

}

注意:for/in循环遍历的集合必须是实现Iterable接口的。

//曾经我们这样写:

void someFunction ()

{

List list = new ArrayList();

list.add("Hello ");

list.add("Java ");

list.add("World!");

String s = "";

for (Iterator iter = list.iterator(); iter.hasNext();)

{

String temp= (String) iter.next();

s += temp;

}

System.out.println(s);

}

//如今我们这样写:

void someFunction ()

{

List list = new ArrayList();

list.add("Hello ");

list.add("Java ");

list.add("World!");

String s = "";

for (Object o : list)

{

String temp = (String) o;

s += temp;

}

System.out.println(s);

}

// 假设结合“泛型”,那么写法会更简单,例如以下:

void someFunction ()

{

List list = new ArrayList();

list.add("Hello ");

list.add("Java ");

list.add("World!");

String s = "";

for (String temp : list)

{

s += temp; //省去了对强制类型转换步骤

}

System.out.println(s);

}

//上述代码会被编译器转化为:

void someFunction ()

{

List list = new ArrayList();

list.add("Hello ");

list.add("Java ");

list.add("World!");

String s = "";

for (Iterator iter = list.iterator(); iter.hasNext(); )

{

String temp = iter.next();

s += temp;

}

System.out.println(s);

}

这样的写法的缺点:

尽管对集合进行的for/in操作会被编译器转化为Iterator操作,可是使用for/in时。Iterator是不可见的,所以假设须要调用Iterator.remove()方法。或其它一些操作。 for/in循环就有些力不从心了。

综上所述。Java 5.0中提供的增强的for循环——for/in(for each)循环能让我们的代码更加简洁,让程序猿使用时更加方便,可是也有它的局限性,所以一定要依据实际须要有选择性地使用,不要盲目追求所谓的“新特性”。

for循环和增强版的for循环的更多相关文章

  1. 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版

    <zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...

  2. hdu 1024(最大和连续子序列增强版)

    题意:最大和连续子序列的增强版,要求从一序列中取出若干段,这些段之间不能交叉,使得和最大并输出. 分析:用dp[i][j]表示前j个数取出i段得到的最大值,那么状态转移方程为dp[i][j]=max( ...

  3. Luogu 2540 斗地主增强版(搜索,动态规划)

    Luogu 2540 斗地主增强版(搜索,动态规划) Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游 ...

  4. 个人永久性免费-Excel催化剂功能第60波-数据有效性验证增强版,补足Excel天生不足

    Excel在数据处理.数据分析上已经是公认的最好用的软件之一,其易用性和强大性也吸引无数的初中高级用户每天都在使用Excel.但这些优点的同时,也带出了一些问题,正因为其不同于一般的专业软件,需要专业 ...

  5. Spring 循环引用(一)一个循环依赖引发的 BUG

    Spring 循环引用(一)一个循环依赖引发的 BUG Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring 循环 ...

  6. 将表里的数据批量生成INSERT语句的存储过程 增强版

    将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...

  7. 最新GHOST XP系统下载旗舰增强版 V2016年

    系统来自:系统妈:http://www.xitongma.com 深度技术GHOST xp系统旗舰增强版 V2016年3月 系统概述 深度技术ghost xp系统旗舰增强版集合微软JAVA虚拟机IE插 ...

  8. 最新深度技术GHOST XP系统旗舰增强版 V2016年

    来自系统妈:http://www.xitongma.com 深度技术GHOST xp系统旗舰增强版 V2016年 系统概述 深度技术ghost xp系统旗舰增强版集合微软JAVA虚拟机IE插件,增强浏 ...

  9. WinNTSetup v3.8.7 正式版绿色增强版

    最强系统安装利器:WinNTSetup 现已更新至 v3.8.7 正式版!这次更新修复调整了诸多问题,新版非常好用接近完美!WinNTSetup 现在已经自带BCDBoot 选项,并且完全支持Wind ...

随机推荐

  1. 自定义的tabBarController的几种方法

    本文转载自:http://blog.sina.com.cn/s/blog_79c5bdc30100t88i.html 我自己实现的一种可以很方便的实现更换TabBarController图片的方法,代 ...

  2. Caffe简单入门 AI

    https://yq.aliyun.com/articles/112207?spm=5176.100239.bloglist.58.wN003U

  3. 显示所有环境变量:env 或者 printenv

    显示所有环境变量:env 或者 printenv

  4. 网络游戏MMORPG服务器架构

    转载于:http://justdo2008.iteye.com/blog/1936795 1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构 .关键词 网络协议 网络IO 消息 ...

  5. Orchard运用 - 网站样例

    在此分享一些个人觉得比较不错的基于Orhcard搭建的网站. 中文版: http://www.58img.com/ http://www.weijiqiong.com/ http://www.apma ...

  6. Orchard运用 - 整合Disqus评论插件

    评论对于博客系统那是必须具备的一个功能,Orchard本身也默认实现了评论模块,你可以集成到其他内容,比如博客随笔,不过觉得有点寒碜,样式有点呆板.幸运的是,你可以简单集成第三方评论插件,比如Disq ...

  7. IP addr命令

    我们都知道Windows上查看IP地址是ipconfig, Linux上是ifconfig,但是Linux上还有一个命令叫ip addr可以查看IP地址. 如上图所示命令显示了机器上的所有网卡,大部分 ...

  8. 解决Oracle监听错误的一种办法

    1:事出有因 安装oracle数据库,默认安装的是orcl数据库,安装完成后查看了一下字符集是gbk的,由于业务需要al32utf8的字符集,所以需要修改字符集,但是修改却无效.于是就删除了默认的or ...

  9. 分布式系统漫谈一 —— Google三驾马车: GFS,mapreduce,Bigtable

    分布式系统学习必读文章!!!! 原文:http://blog.sina.com.cn/s/blog_4ed630e801000bi3.html 分布式系统漫谈一 —— Google三驾马车: GFS, ...

  10. HYSBZ 1012 最大数maxnumber

    思路:在单调队列不更新列首.由于查询区间大小不确定,所以不能保证下次是否还用到它 #include <cstdio> #include <cstring> #include & ...