foreach语句
foreach语句他无非就是for循环的封装,为了提高开发速度才创造出来的。他其实跟for循环一样,只不过写起来比较简便,他是1.5版本才出来的一种封装语法。并没有什么奇特之处他里面的机制就是for循环。如图7.3所示:

图7.3
首先放在冒号后面的,他可以是数组的类型也可以是集合类型还可以是枚举类型,也就是说只要写上类似于这种容器,能够容乃多个的就是行。
那这个i是什么意思呢?每次循环的时候,i他取出一个值交给变量j,变量j就是接收者,接收从数组或者集合里拿出来的值交给接收者,每次循环重新接收值。
就算这样写但最后编成class文件他还是还原了以前的写法,他只是一种简写,就是为了加快开发的速度,他底层的东西是没有发生改变的,所以这只是一种简写的方式,最终还是转换成了机器认识的东西。
任何的编程语言不管什么样的写法,他其实最终都会转成机器的代码,机器他永远认识的都那一个。为什么软件很容易破解如图6.31所示:

图7.31
用户写代码,转成机器认识的代码,机器码是可以翻译过来的,而源代码别人是看不到的,不知道逻辑是怎么运行的。
比如饭店,有火爆的也有不火爆的,其实最重要的是管理的制度,做菜也是一样的材料,一样的地方好的,但是他做出来的就是好吃,或者人家的服务就是好,那么人家的做法,人家的服务就是人家的逻辑,你给的什么材料无非就是资源。所以逻辑是理念是看不到的,最终的结果就是一盘菜出来。
所以做反编译,做解码那些大部分都是从机器码下手的,机器码都是可以看到的。只有中间的这个源代码部分看不到。什么是开源,开源就是把人能够看懂的代码开源出来。
结合上面的内容,foreach语句紧紧只是一种简写的写法而已,不管到哪,他最终都会形成for循环的那种形式。也就是不管任何的编码他怎么做,他最终都会转成机器码去执行。
需要注意的是,你的数组是什么类型的,那么foreach语句的接收者也得是什么类型的不然会报错如图7.32所示:

图7.32
技术分享:www.kaige123.com
foreach语句的更多相关文章
- Java Iterator, ListIterator 和 foreach语句使用
Java Iterator, ListIterator 和 foreach语句使用 foreach语句结构: for(part1:part2){part3}; part2 中是一个数组对象,或者是带 ...
- 【Java学习笔记】foreach语句(高级for)
package p2; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java ...
- Java中的可变参数以及foreach语句
Java中的可变参数的定义格式如下: 返回值类型 方法名称(类型 ... 参数名称){} foreach语句的格式如下: for ( 数据类型 变量名称 :数据名称){ ... } public ...
- 可迭代的集合类型使用foreach语句
在学习算法这本书图论那一部分的时候,接触到了几个类似for(int w:G.adj(v)),的语句,不是很理解,就去百度,发现这是一种叫做foreach的语法,在书的76页有讲到,但是之前没认真看书, ...
- 自定义一个可以使用foreach语句进行迭代的类(IEnumerable)
在c#中,凡是实现了IEnumerable接口的数据类型都可以用foreach语句进行迭代访问.所以,我们要定义一个可以使用foreach进行迭代访问的类,就必须要实现IEnumerable接口. / ...
- C#中foreach语句的迭代器实现机制
C#中的foreach语句可用于循环遍历某个集合中的元素,而所有的只要支持了IEnumerable或IEnumerable<T>泛型接口的类型都是可以 用foreach遍历的.其具体的遍历 ...
- C#中的foreach语句与枚举器接口(IEnumerator)及其泛型 相关问题
这个问题从<C#高级编程>数组一节中的foreach语句(6.7.2)发现的. 因为示例代码与之前的章节连贯,所以我修改了一下,把自定义类型改为了int int[] bs = { 2, 3 ...
- 从foreach语句枚举元素看数组
在foreach语句中使用枚举,可以迭代数组或集合中的元素,且无须知道集合中的元素的个数.如图显示了调用foreach方法的客户端和集合之间的关系.数组或集合实现带GetEnumerator()方法的 ...
- 浅析foreach语句
本篇是我对于foreach语句(增强for)的总结: 我的总结流程如下: 1.先整体说明增强for遍历集合与数组之间的区别. 2.通过一维数组来说明(给出反编译的源码,形成对照). 3.通过二维数组来 ...
随机推荐
- mybatis配置文件xml中插入新数据
初用mybatis,发现很好的一个操作数据库的框架,里面有一些小技巧,挺简单,很实用,记录一下: mybatis的插入语句: <insert id="insertAsset" ...
- Excel VBA Dir
内容来自ExcelHome网站 一.题目: 要求编写一段代码,运用Dir函数返回一个文件夹的文件列表.二.代码:Sub 示例_1_12() Dim wjm wjm = Di ...
- [Android Memory] android 警告:Exported activity does not require permission
在一个应用程序中添加了多个antivity后,在manifest.xml文件中会除了主Activity外,其它的Activity属性中都会有个警告: Exported activity does no ...
- Java虚拟机支持的最大内存限制
最近在开发Java的程序.本来我是一直很喜欢Java的内存管理的,不需要担心分配内存,只管分配,垃圾收集器自己会给你回收内存的.现在开发的程序数据量很大,为了速度快,我准备把所有的信息加载进内存,这样 ...
- 堆的判断(codevs 2879)
2879 堆的判断 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 堆是一种常用的数据结构.二叉堆 ...
- 分布式缓存 memcache学习
1.使用分布式缓存是为了解决多台机器共享信息的问题,通过访问一个ip和端口来可以访问不同的IIS服务器 2.memcache基础原理 在Socket服务器端存储数据是以键值对的形式存储 内存处理的算法 ...
- WPF入口Application
1.WPF和 传统的WinForm 类似, WPF 同样需要一个 Application 来统领一些全局的行为和操作,并且每个 Domain (应用程序域)中只能有一个 Application 实例存 ...
- 操作JNI函数以及复杂对象传递
转自:http://blog.csdn.net/qinjuning/article/details/7607214 在掌握了JNI函数的使用和相关类型的映射后,以及知晓何利用javah工具生成对应的j ...
- 建模算法(九)——拟合
一.线性最小二乘法 1.基本思路 令,其r(x)是事先选定的一组线性无关的函数.ak是待定系数.然后拟合的准则就是使得yi与f(xi)的距离的平方和最小,称之为最小二乘准则 2.系数的确定 ,要使距离 ...
- jpg图片转eps 用于LaTeX
好用的网上在线转,使用的sam2p 可以方便地将jpg或jpeg转为eps,pdf http://www.tlhiv.org/rast2vec/ windows下.jpg转.eps for latex ...