00:00
那么大家看到刚才这个语法现象呢,你们会觉得非常的奇怪哈,至于它这个语法是怎么实现的,注意听这个语法底层是怎么实现的,我们放在后边还会有,有时间我们再讲一下,其实它这个地方就是反过来调的,其实这个地方最终这边调的是个什么东西呢?其实这个页里面它是可以接收一段代码块的。啊,后面能够体现出这个特点啊,后面我们还会说这个事儿,那么现在呢,我们往下面继续来讲一个语法现象,就是在。在这个for循环里面呢,它可以使用这个花括号来替换,替代这个小括号,这个语法大家能看得懂,你比如说刚才我就直接说这个事儿就行了啊同学们,比如说我这里有个for循环。啊,那现在呢,我们来说一下这个括号的一个使用的特点。然后新建一个。啊,就是括号啊,就是这个。
01:01
我们看看这个地方取个什么名字啊,就是括号啊,使用use啊形式for循环的use形式。那么我们来看一下它的这个使用方式,同学们你看比如这种写法,这种写法原先我们是这样写的,是哎,不是这样子啊,这样写的。这样写的是对的,大家看这是一个小,这是一对小括号,小括号,但是呢,上面这个写法也可以等价,这种写法等价什么写法呢?好,我给大家打印一下。好打印一下,它也可以写成这个形式,把这个。改成大括号。它改成大括号,改成大括号过后呢,呃,那么这两个是等价的,既然改成大括号了,过后呢,一般来讲它的格式语法就会发生变化,就是它会把这个分号,这个分号可以保留啊,但是他一般会把它去掉,然后再换行这种写法。
02:04
啊,这种写法也会在我们这个开发中验得变得比较多,你看就是这样写。这样写,比如说更标准一点,就是把这句话也拿下来。大家以后看到这个写法不要觉得很奇怪,说哎,是不是应该写错了,没有写错啊,就是相当于说把这个换小括号换成了大括号,然后呢,因为它是分行写的,所以这个分号也就可以拿掉了,那么执行一下,看执行的效果是不一样的。好,我们可以看到执行的效果完全一样啊,就是这个语法现象要清晰清楚一点,清楚一点,好,我们接着,呃,把这个就说完了,大家看这里啊,我们就。把这个放到这儿就行。好,就是括号的一个改写。好,我把它呢,给大家放到标题三里边去,基本案例,诶基本的案例给它来一个这个箭头对吧,然后呢,这边有他的一个基本案例的说明。
03:05
好,这个呢我们就说到这,好下面呢,我们继续来讲解下一个话题是什么呢?注意事项,注意事项有一个地方我要强调一下,就是scale for循环的其实和Java区别有点差异,这点请同学注意注意,这是第一点,但基本的运行原理一样,就说它在底层里面那个变量的替换和机替换的运行的机制是一样的。这是一个第二,一个sky for循环的这个步长怎么控制,我一直没有讲,同学们可以看到刚才在讲这个地方的所有的案例里面呢,我都避开了一个话题,就是布场。你看啊,同学们看,刚才我们讲这个for循环。呃,我就举这么一个最简单的例子,就是我们看到第一个案例,你看你不是从这个start到end吗?它默认大家也应该看出来是增一,那如果我要增加两个怎么办呢?因为你不能把这个I进行增加,你不能这样干啊,说老师我要把它增加一个,我把这个I这样键加一下就不行了,告诉你加都加不动。
04:12
你知道为什么加不动吗?因为这个I传进来,它是一个Val类型的,你动不了它。因为在这个SC里面呢,他认为这个值它默认就直接写成V,你是动不了的,它不会让你改变这个V的值。所以说这是动不了的,那怎它是怎么处理这个变长步长的问题的,大家看我提出问题,那么盖控制这个步长呢,它使用了一个range。Range,这是一个range,它构建了一个什么呢?实例,就range这个实例。啊,大家看起来好像是个函数,其实它构建的是个实例,那么我们给大家跑一下啊,来举个例子,举个例子。咱们慢一点啊,Range for就是不长控制它一个范围的,不长走会叫step啊。
05:06
ST STP step four。啊,看一下这个步长怎么控制。好,比如说现在呢,我有呃,我就简简单直接写啊,我就写个1TO1TO10,在默认的情况下,大家都知道它是呃步长为一的,它步长为一。哦,我们来执行一下。这个肯定是一到十,这大家一看就清楚,肯定是一到十,现在呢,我想让他做一个不长,为什么呢,不长。不长,控制为二,你看我怎么写啊,各位同学注意看。这时呢,我们的写法就会改成这个样子的for循环。I。一到。十啊,这个就是不不写这个了啊叫什么呢?就是range,大家看这里直接写range。
06:05
这直接写润,后面这个地方就一个润值来写,那我把这个改一下。不要这个啦。整个用RG。好,里面呢会填三个参数,大家看下面写的很清楚了,第一个是大的值。第二个是N的这个值,第三个是不长。第三个是不长,那比如说我是12就写完了。那它是通过这个来控制的,那我把这个I给大家打印出来。同学们请看效果。同学们现在呢,应该是135啊这样子去计算的跑一个。我们可以看到这边呢,是13579,那么我们追进去看一下这个代码,为什么可以这样控制呢?我们选中这个range,输入CTRL加B。大家看到它其实是一个集合。
07:00
Imuntable是不可变的意思,它是一个集合,集合什么集合呢?注意听啊,你们是你们是学过Java的,有些地方我可能就不会讲的,那么就说不会从基础讲啊,我就直接告诉他这是个集合怎么做的呢?走到这里面,大家可以看到它是一个object,那么object里面它提供了一个叫apply的方法。大家可以看到哦,大家往下面走。大家往下面走。啊,往下走。哎,同学们可以看到这有一个apply。那么这个apply是什么意思呢?Apply其实就是可以省略掉一个new而创建一个对象,看这个地方会触发一个apply apply做了一件什么事情呢?谬了一个range,那么传了几个参数进去看start end和step,这写的很清楚。啊,就是呃,从哪开始到哪结束,步长是多少。就实际上它是靠这个给我们构建的,我把这个呢,给同学们搬到这方来。
08:06
这个range。这个底层的含义。12的。这个对应的,对应的这个构建方法,构建方法是这个。啊,是这个,只是现在同学们还不知道这个apply是什么啊,我们后面会详细介绍,大家放心,很快就会讲了,大家也不能说我有一点听不懂,我就觉得好像不能理解,也不至于啊,就是我告诉你们,其实这个地方最终走的代码是。这个。就清楚了,那么大end sleep什么含义?这也写的很清楚,这是第一种方式控制不长,我们还有一种方式也可以控制不长。控制不长的第二种方式。第二种方式,什么方式呢?诶我们可不可以这样去玩一把,同学们,刚才我们是不是学了一个,我们是不是学了一个,这个叫做for循环的守卫,还记得吗?
09:09
A,有同学能不能用负循环的首位来实现控制波长呢?有没有同学能做到这一点?其实挺简单的,你看啊,如果我们用这个for循环的首位来实现更加的简洁,而且呢,很好理解for循环首位。也可以的,说老师你怎么做呢,给我们演示一下,好,我给同学们演示一下,还是一到十。守卫。来了啊,所谓因为是if,所以这个掉if来I。磨上一个二等于一,诶是不是这个好像。也可以啊。是不是是不是因为我这个条件是只有这个条件为真的情况下,我才执行下面代码吗。
10:00
是不是这就可以了,非常的OK啊,你看现在我们再来看一下这个代码,其实效果已然是OK的,那么同学们,我这边为了好看呢,再给大家来一个星号的间隔,注意听讲啊,同学们。注意看道理完全OK,请看仍然输出是13513579,为什么呢?因为你这个I它去执行的时候,他先看这个条件,我不会增,比如说你是一一模二就等于一,所以一进来了。当这个I增加了以后,给变成二二模二哎,等于零不成立,于是就跳过。以及其他,以此类推,那如果我想控制步长为三改成三,控制步长为四改成四,控制步长为五改成五,以此类推。好,同学们注意这个细节啊,以后别人问你不用这个range,我能不能实现这个步长控制,你要答可以的,你不要说,哎,老师这个这个循环守卫刚才不是好像没感觉用处吗?现在这个用处就拿出来了。
11:03
哎,同学们拿出来了,好,这是老师讲的,呃,用两种方式来控制我们for循环的不长,非常的有用啊,非常的有用,那么我把这个呢,给各位朋友放到这里来。诶放在这里就是我们一个使用的注意事项。好,这是刚才讲的标题三,一共有呃三点需要各位同学注意一下,第一点,哎,第一点就是咱们这一块的,呃,一个原理是一样的,还有一个控制不长,那么我把代码。给同学们整理到笔记中去啊,演示的代码,演示代码,OK,各位朋友。我把这一段代码呢,给大家拷贝到咱们的笔记中去,诶控制不长的代码对吧?诶第一种方式用认知。R用range。
12:00
这个呢,其实用到它,呃,是看到提供的一个对象或者是一个类来实现的,那么第二种方式呢,我们就巧妙的利用了这个循环守卫来实现,而且这个循环守卫还还很厉害啊,它还可以实现什么呢?实现这个break的效果。大家可以想象怎么实现。啊,这个循环所谓还可以实现break的效果,因为在SC里面break这个关键字已经没有了。它也是用循环首位来实现这个break的效果好,但后面我们还会说这个东西好,同学们,那么这个for循环的注意事项说完了,现在呢,我们来做两个题啊,老师呢,呃,讲完for循环过后,我们一起来做这两个题,注意听啊,我现在做两个题都给写一写。多写一写啊,嗯,后面有些题要你们做,这两个题我先给大家一起做一做好for循环的练习题,好的同学们打开我们这个idea,我们新建一个for循环的EXEXCI,零。
13:09
这是我们的第一个练习,注意听啊,来me,先把这个需求连过来。粘过来。好,第一个,呃,打印一到100之间,所有是九的倍数的整数。的个数及总和。就是一到100之间有多少是九的倍数有几个,而且它的总和是多少,给我算出来好,非常简单,老规矩,首先定范围,那么先写个start,默认从一开始V。呃,结束是100,显然这个时候我们就可以开始进行一个便利。I遍利用star to,显然用to啊,同学们,因为它包含100,好这里写完,然后呢,现在我们就在这里加一个判断,加一个判断这个时候因为他要算这个啊,我就直接写到这,如果I。
14:09
I9等于零。M9等于零,那么如果它这一方等于零的话呢,我们就可以在外面定义两个变量啊,统计一下第一个是count啊,还有是总和。They来,我们把它写到这里来。count呢,就加一。就代表我统计到有一个数是九的倍数,同时呢,把这个sum加起来好,最后for循环结束以后拿到这个结果了,我就直接写了啊F。那么我们就写count等于百分D对吧,然后呢,这个sum等于百分D,最后换一行输出它count,再来一个sum写完了。
15:01
好,同学们,我们执行一一把。看结果。跟我们想的是一样的,11和594肯定是对的,好,我们再来看第二一个题,第二个题呢,他说呃,要我们完成一个零加六等于六,呃,这个相当于就是做一个这个循环,这个一层循环就可以搞定,不需要两层循环。不需要两层循环,所以说呢,我就直接给他演示一下。啊,输出一个什么呢,加法。加法的一个加法的一个循环式,循环表达式。好来吧,首先我们先定一个值啊,先定一个值,这个值呢,我们就认为是它的一个这个这个这个number吧,默认它是个六波循环开始了。I走,从一到number。好啊,一到number过后呢,现在我们就输出这个表达式。
16:01
表达式用格式化一下。格式化一下啊好,格式化呢,我们就写百分D加百分D。啊,百分D等于一个百分D,那么第一个呢,就是I这个值,因为它会不停的变化嘛,哦对,说错了,应该是从零开始啊,我们看一下,因为它是包含这个零的,所以那我就从零开始。零到这个number,好,那第一个呢,就是I。第一个是I,第二一个呢,其实就是number减去I对不对,诶,因为它是不停的变化,最后这个结果呢,还是就是number完事了,那么为了好看呢,我每次来一个换行输出一下,请看结果。好,这些对我们来说都是简单的事啊,同学们,我相信同学们应该都能搞定。这个没没事,我主要是把这个语法给你演示一下,让你们知道就这么用,我如果不写一次呢,大家老觉得,诶是不是这样用啊,对不对,所以说我呢,把这个给他演示一下,好同学们,那for循环的这个练习呢,我们就说完了,包括这个for循环的细节,我们再给他板述一下。
17:11
A。好,我们把它进行一个板书啊,刚才这个这个都说完了,这是for循环的练习体验。啊,不循的练习题好,写到这,好,我们再来看一下不循环的练习题。给大家写到这里来。啊,For循环练习题做了两个简单的案例。简单案例哪两个案例呢?来看一下啊,我就直接把这个代码粘过来就可以了。啊,粘过来就可以了。好的粘贴复制一下。对吧,好,这是练习题,我们截取段视频。
我来说两句