文档章节

foreach语句

凯哥学堂
 凯哥学堂
发布于 2016/11/02 15:04
字数 796
阅读 8
收藏 0

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

© 著作权归作者所有

凯哥学堂
粉丝 18
博文 316
码字总数 284948
作品 0
东城
程序员
私信 提问
从foreach语句枚举元素看数组

在foreach语句中使用枚举,可以迭代数组或集合中的元素,且无须知道集合中的元素的个数。如图显示了调用foreach方法的客户端和集合之间的关系。数组或集合实现带GetEnumerator()方法的IEnum...

xmgdc
2017/07/03
0
0
php数组循环输出实现方法【实例代码有误!!】

以前我们经常会想怎么来实现php数组循环输出来,本文章来介绍了利用php中常用的四种循环语句来实现单数组或多维数组循环输出方法. 在 PHP 中,我们可以使用下列循环语句: while 只要指定的条件...

adbug
2016/04/11
108
0
sql语句,insert时用foreach问题,谢谢

insert into activity_photos(activity_id,member_id,photo_url,up_time) values(#{activityId},#{memberId},#{item},sysdate()) 上面是不对的,我自己弄的。 效果:插入多张图片到表中,lis......

钟上天
2015/09/15
1K
6
【转载】Asp.Net中使用基于jQuery的javascript前台模版引擎JTemplate

JTemplate是基于jQuery的开源的前端模版引擎,在Jtemplate模板中可以使用if判断、foreach循环、for循环等操作,使用Jtemplate模板优点在于ajax局部刷新界面时候不必要拼接html语句、可以通过...

江湖逍遥
03/28
0
0
smarty 内置函数

内置函数 1.使用{$var=...}来创建一个变量。 //在模版中创建变量 {$name = 'Mr.Lee'} //输出变量 {$name} 2.使用{assign}来为变量赋值。 //这又是一种创建变量方式 {assign var='name' value......

菜鸟不菜么
2017/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mysql的sql_mode模式

sql_mode 是一个很容易被忽视的配置,宽松模式下可能会被输入一些非准确数据,所以生产环境下会要求为严格模式,为了保持生产环境和开发环境,测试环境一致性,我们开发环境和测试环境也要配...

贾峰uk
31分钟前
3
0
Qt程序打包发布方法(使用官方提供的windeployqt工具)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/toTheUnknown/article/details/81748179 如果使用到了Qt ...

shzwork
今天
7
0
MainThreadSupport

MainThreadSupport EventBus 3.0 中的代码片段. org.greenrobot.eventbus.MainThreadSupport 定义一个接口,并给出默认实现类. 调用者可以在EventBus的构建者中替换该实现. public interface ...

马湖村第九后羿
今天
3
0
指定要使用的形状来代替文字的显示

控制手机键盘弹出的功能只能在ios上实现,安卓是实现不了的,所以安卓只能使用type类型来控制键盘类型,例如你要弹出数字键盘就使用type="number",如果要弹出电话键盘就使用type="tel",但这...

前端老手
今天
8
0
总结:Raft协议

一、Raft协议是什么? 分布式一致性算法。即解决分布式系统中各个副本数据一致性问题。 二、Raft的日志广播过程 发送日志到所有Followers(Raft中将非Leader节点称为Follower)。 Followers收...

浮躁的码农
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部