00:00
OK啊,又是新的一天啊,今天的话呢,咱们关于这个流程控制这块呢,就差这一个内容了啊,叫break和continue关键词的使用,诶这个完了以后呢,咱们可以做一个小的项目,诶整个呢,我们关于流程控制呢,就算是告一段落了,诶接下来的话呢,我们开始使用这个idea这样一个比较高级的工具啊,做Java开发了。好,那咱们来看一看最后关于这一章的一个知识点,哎,Break和continue啊,这呢是两个关键字,在我们整个呢编写程序的过程当中,哎,像我们前面讲的分支结构啊,If three case这个循环结构啊,三种循环结构,在这个使用的过程当中啊,哎,我们有可能会用到啊的两个关键字。那其中呢,关于这个break关键字啊,其实咱们已经讲完了。哎,在讲解前面这个Switch case的时候,讲解这个循环结构的时候呢,我们已经用过这个关键字了。啊,那这个肯呢,之前是没有见过的。其实从这个角度上来讲呢,这肯定用啊,用的其实就比较少一些。你看咱们前面讲的一些题目当中呢,呃,有的一些场景当中是必须要用break的。
01:05
比如说你看咱们在case当中,我不想case穿透。那你就得用break啊哎,我们在这个循环结构当中的时候呢,如果咱们这个循环结构啊,对应的呢,是一个呃,形式上是这种无限循环的一个效果,看似是啊,那这个时候呢,我们必须在这个循环里边呢,使用break来让它跳出这个循环结构。哎,像这呢,就是break呢,一定会使用的这个场景啊,那相对应的话就是它的频率呢,还算是比较高的啊,那肯定用的话呢,你前面发现我们根本就没有用过,那那实际情况呢也是啊,它用的频率呢就要低一些了。但是呢,多少属于我们在流程控制当中可以使用的两个关键字,那下边呢,咱们就要讲一讲,OK,然后呢,下边还提到一个啊,这个goto这样的一个关键字,在咱们这话当中,嗯,咱们一开始讲的时候也提到过啊,说这个got to呢是一个保留字。啊,并没有给它赋予实际的含义啊,在很多的编程语言的这个goto呢,是有具体含义的啊,相当于相应的它可以跳转到指定的这个语句上。
02:07
那么在咱们这个Java当中呢,这个break和肯定的它的使用呢,实际上是不统一这个goto的啊,这个大家呢,可能没有接触过这个goto的语法的,这个你了解一下就行了啊好,那么具体的我们看这俩关键字该怎么用呢?呃,咱们先呢也是写一个这个代码。诶,找到咱们这个代码的这个位置。好,第三章啊,在这里边儿呢,我们去新建一个。哎,这样啊。哎,关于break,哎和continue啊,这个单词呢,不太好写,这个呢,稍微你得熟悉一下。打开啊。地盘下的。好,这里边儿。诶,首先的话呢,我们呃,先声明这样一个class。Break。哎,Continue是吧,这样写。好,CTRLC。啊,这个CTRL啊,本来已经保存了啊。那这么着。我的妹啊。
03:02
哎,四针类型的一个X这样的一个数组。好,在这呢,我们去写具体这个测试的代码了,上面呢,我们来写对应的这个说明。OK啊,来,Break。和。哎,Continue,哎,关键字的一个使用啊,其实这两个关键字的话,你说它怎么用呢?诶正如它这两个单词翻译成中文这个意思一样,Break呢,就是停止的意思是吧。哎,停止,然后那肯定性的。继续是吧,哎,这样来看的话呢,似乎说他俩好像像一对。这个反义词义哈,是吧,哎,其实的话呢,它在使用当中呢,呃,算是有一点相似之处哈,这个我们看所谓的相似指的是什么意思,来我们下边来去写一下,首先呢,我们把这两个关键词呢,我就放到左边了。诶,这个一个叫break,一个continue啊,哎,首先呢,我们关注的是呢,它在哪些结构当中去使用啊,也就是它的一个使用的一个范围啊,那break呢,咱们已经比较清楚了两个结构。对,一个呢叫three case这样的一个分支结构哈,另外呢,就是。
04:04
在循环结构中。OK,哎,循环结构呢,咱们讲的这三种呢,都是可以去使用break的。好,那么这个肯定就我们在哪用呢。它只能使用在这个循环结构当中。啊,循环结构当中,哎,那在循环结构当中你说啊继续是吧?哎,那这个所谓的继续什么意思呢?本身循环本身就就有一种呃继续呃不断的去执行末端代码的一个功能了,是吧?哎,那下边的话呢,我们就要具体关注一下,在循环结构当中这个break是什么意思啊。它的一个作用。OK啊行,那在循环结构当中啊,关于这个break,它的一个作用是什么呢?这个我就写到这一行吧,它呢表示叫结束当前循环是吧。哎,当前啊循环结构,哎,或者的话呢,这个结束咱们也可以换个词呢,叫做跳出是吧。哎,当前循环结构,哎,前面呢,我们已经通过一些题目呢,大家都熟悉了啊,那么这个continue呢。
05:05
我们就来结束当次循环。或者呢,也叫做叫跳出。当次循环注意啊,当次。哎,那就意味着他要开始下一次循环。哎,稍微的有点懵是吧,来咱们就写个代码呢,去做一个测试啊,那这个测试的话呢,不妨我就写成这个for循环了,哎,In特个I呢是一,然后I呢小于等于十啊I呢加加相当于呢,我们便利一下啊,一到十这样的这些自然数啊,那便利的过程当中呢,哎,我这呢,首先呢写一个输出语句。system.out点。哎,Print啊,这个我就不写这个换行了啊,直接呢,我们把这个A呢,就打印一下,这个操作的话呢,所有同学应该都是很熟的,哎,我们如果去打印它的话呢,这个效果是这个样子的。CMD一下啊。哎,往这边移一下。好,张亚飞。
06:01
哎,Break。continue.java。哎,Break。Continue test。哎,走起啊行,这个呢,应该是都比较熟的了啊好,然后呢,在这个循环体当中啊,哎,我在前面呢,加上一个依附语句说如果呢,这个I呢,取模四呢等等于零。相当于呢,你要是诶除四的话呢,如果能除尽的话呢,我加一个break。OK,好,那么这时候大家看一下我们这个输出结果是什么样的呢。哎,123到四的时候呢,就跳出是不是或者叫结束当前循环结构了是吧。哎,那这时候我们的结果呢,就只有123。嗯,五会有吗?不会了,他就整个把这个循环结果给结束了是吧。哎,所以说只有这个123。那这个呢,就是我们所谓的啊,叫跳出当前循环结构,整个这个结构就给结束了啊,没有A加加的机会了啊好,这个呢,就是我们说的这个它的一个特征,那这呢,我把它呢给注释掉啊,我把它呢换成叫continue。
07:09
首先呢,这个肯定性呢,我们是被一个循环包裹着的,这就是所谓的呢,在循环当中使用的意思。你要是没有这个循环结果,你把这肯定就能直接扔到这个位置,哎,没方法的力上来就来,肯定有,那就错了啊。还不行,好保存一下这个呢叫哎跳出当次循环,或者叫结束当次循环啊,哎,什么意思呢。你比如说我们刚开始的时候呢,这个是I123的时候是进不去的,那么123就打印了。打印完以后的话呢,当I是四的时候呢。他一到这儿,肯定牛了。哎,那么对,就意味着当我们S4的时候呢,它一旦执行到这个位置的时候,直接就蹦到我们这个循环的迭代条件这儿了,直接呢,就A加加开始下一次循环。啊,所以说这事呢,这时候呢,我们在四的时候呢,根本就没有输出,所以直接呢,就爱加加变成五了,哎五一进来呢,If服没进去,哎打五就输出了。
08:05
哎,567到八的时候呢,同样道理啊,八呢,取模四等等于零了,哎,又continue了,直接就不输出了,再回去八变成九,九呢,再一进来,没进义服把九输出了。直接输出。哎,所以这时候我们看到的效果呢。123。哎,五六七九十。对,把这个四和这个八呢就给过掉了。啊,体会一下啊,这儿呢,就咱们说的这个叫呃,跳出当次循环,换句话说呢,就是开始下一次。啊,这个意思。啊OK啊,就是说刚才我们提到说这个呢叫结束,这个呢叫继续,似乎呢响应就是反义词,呃,其实呢还嗯不是那个意思是吧,这个结束的话呢,就整个把我们的循环结束了,这个呢也有点结束的意思啊,这不都要结束嘛,只不过呢,它结束的是当次,你可以理解成呢,就是这个力度呢,好像更大一些啊,一下把整个结构结束了,而这个力度呢,比较小一点,结束的只是当次这样的一个结束。
09:01
哎,这就是它的一个特征啊行,那这呢是他们在循环当中使用的一个作用啊,然后呢,稍微啊,这哥俩呢,还有点儿这个相同点啊。啊,我们拼命的去找一找,看看他们有没有什么相同点是吧?诶这个所谓的相同点呢,也是大家在开发当中啊,使用的时候呢,一个小的注意点啊,就是这个break也好,肯也好啊大家你想想啊,我在这个位置呢,有输出语句,因为呢,它有可能进不去if,那我们就会输入这个,那么问题就是说我们在这个位置能不能写输出语句。或者呢,能不能写执行语句啊,不一定是输出了。不行是吧,比如今晚上。这个迪丽热巴是吧,哎,要约我是吧。啊,这个事儿呢,能成吗?这事不现实是吧,诶这时候你看我们编译,注意看一下编译能不能过啊走起。哎,直接呢就给挂掉了,哎第20行在这儿啊,说无法访问的语句啊。
10:00
叫unreachable是吧,不可到达的啊,呃,这个呢,其实我们也很好理解啊,一旦你执行到这的时候,不管是break也好,Continue也好,我就直接下一次了,我直接呢就把循环结构结束了,你这个位置根本就没有机会执行。那既然没有机会执行,所以我们在呃语法这个层面呢,你这样写了编译直接就报错了。诶,所以呢,我们叫,诶编译不通过啊。哎,这个呢,注意一下,这呢,就算他俩的一个相同点啊,也就是说呢,呃,我们在此关键字的后面不能。声明执行语句啊。哎,执行语句这呢,我写的是一个输出语句,你也可能说我定一个变量,那也不行啊,哎,这个呢,大家一定要小心一点啊,CTRLC一下,这个在这也放,哎哟,在这也放一份吧。好,这个呢,就我们要强调了,这个break我就不去演示了啊,他俩是一样的都不行啊,那有没有同学会说说诶这不算是在它的后面吗。
11:01
对,已经出去了是吧,诶这块不算哈,因为呢,你想你这个if要是不满足的话呢,我这个是有可能执行的。而你这个位置是永远都不可能执行的。所以说呢,这个是不允许去写的。行啊,大家注意一下这个问题啊,好,那么这样的话呢,咱们其实把这两个关键词的特点呢,就已经是说清楚了,哎,那么咱们在平时开发当中啊,因为也有这个嵌套循环的这个场景,所以这块呢,我再写一个嵌套for循环。啊,那么这时候大家看一看,Break也好,肯定也好,它结束的到底是外层的还是内层的?哎,我们再写一个,刚才呢,咱们写的是这个是吧?哎,我把这个呢,哎放在另外的一个循环里边看一下啊。我因那个阶呢是一。呃,然后接呢小于等于四,然后接呢加加。诶,这个相当于是我们这个叫所谓的外层循环啊,然后外层循环呢,这是一到四相当于是四轮了,然后呢,内层这个呢,我们还是写这个。我把它呢粘过来。
12:01
哎,像这块呢,我们就先给他干掉了啊,这个位置呢,我们先考虑break,肯定的先注释。哎,这个我们看有必要是得给他调一下往后啊,诶缩进一下,所以我看大家啊,这个课间有时候我看大家写这个代码的时候,不注意这个缩进的问题,你还是要调一调的。啊,这个在我们这个记事本里边呢,这个调呢就费点劲,你得自己调,比如说这个代码呢,整个这一段我想往后移,这个呢,选中以后呢,点这个tab键,然后呢,你想往前移shift tab键。呃,前后这样去移动啊,诶当然了,这个呢,现在讲吧,意义也不太大了,因为我马上就要结束它了,是吧,所以不败了就是吧,哎,在我们这个idea当中啊,这个调快调这个格式的话呢,我们直接一组快捷键啊,就整个全部给你调好了就啊行,到时候我们再说那个快捷键的事儿。好,那么回过来看一眼啊,我看我这块稍微的再动一下,在这个位置啊,我再写个换行。那就这么着啊。
13:00
嗯,好了,咱们看一看啊,现在这个程序呢,我要是去执行的话啊,这个程序呢,我们CTRLC上面这块呢,缺一个换行啊。上面那给大家分一下。我是执行的话呢,你看这个输出结果啊,会是什么。哎,其实就相当于我们来了四轮是吧。嗯,这用的break。123。123123123是吧,好编译运行,你看是不是这样啊。诶,这个呢,你看跟大家想的是不是一样啊,好,稍微的我们分析一下,当这个J是一的时候呢,我们进去从一呢到十,然后呢,一开始的时候啊,123的时候呢进不去,所以呢,我们就把123呢就给输出出来了,哎输出完以后的话呢,当这个I变成四的时候呢,这个就break了,好,现在问题就是break,此时结束的是内层fall还是外层fall?内层房为什么?啊对,诶说这个在这个作用内的啊,其实也算是在这个作用内的是吧,诶这个呢,你也可以看成是一个自然而然的,或者一个呃,自然而然的一个规定一样哈,就是我们现在外层内层都包着这个break的,那我们break结束的就是离它最近的。
14:15
啊,离它最近的这个,呃,实际上这块呢,也有一个这种小的特点,比如我们写这个if啊,就迁移一下啊,这个if的话呢,我们说有可能你就写了个if,没有else的啊,但如果这个if后边我又写了个if。这个衣服这块呢,我也写了L。哎,那么这呢,比如说我们没有呃,特意的写了一个大括号啊,那就只有一行指引居的时候呢,一个大括号不就可以省了。那么这个else的话呢,其实默认的,你说是跟他搭配呀,还是跟他搭配。那他就就近了。就跟他搭配,你说我就让让你跟他搭配呢。那你就这块你整个大括号,然后在这块这个大括号,这个大括号跟他配对,他就让他就跟他搭配了。是吧,哎,就是默认的有这种就近的特点,这个呢也类似哈,这个呢,你俩都包含它,那我结束的就是就近的,就近的,那我就结束这个方。
15:02
但是呢,你要是比如说在这个位置的外边啊,我要写这个break。那这时候结束的就成他了。是吧,因为呢,你内层那个不也没包着这个break吗。是吧,哎行,所以这个break呢,我们理解成就是结束包裹它的最近的这一层循环结构啊好,那这时候我们结束的就是这个fo了,哎,这个结束它以后呢,这有个换行,就体现为我们这个后边的这样的一个换行就跑到这儿来了,然后呢,这个T加加以后呢,再进去,然后又是123。呃,然后呢,再同样的道理,又是个123,一共呢是。嗯,我们这个是一,诶我们这几组啊。啊,上面还有一组呢是吧。哎,上面这一组。我这不有换行吗。嗯,保存了呀,这个结构,嗯,输出完以后呢,我这有个换行。嗯。再来一次啊。编译运行。
16:01
啊,那会儿我应该是没没及时保存是吧,好这个呢,就是我们看到这样的效果了,然后把这个呢,我们注释掉。哎,把这个肯定性的打开,那这个呢。一样的也是呢,结束它的下一次是吧,哎,那这时候它的效果呢。编译运行。哎,能写吗?呃,这个呢,就跟我们刚才分析是一样的哈,这个呢就开始下一次了,所以说这个呢,就诶该567了啊发的时候呢,也是下一次,然后呢,整个这个内存接入以后呢,换行我们开始接加价。这样一个逻辑啊,好,这个呢,就是我们要说的点,就是强调一下啊,我们在遇到多层这个循环结构的时候呢,它结束的就是包裹它最近的这一次,这是一个默认行为。好,那么这个说完之后呢,我们再说一个特别的知识点,这个呢大家做一个了解就行。啊,我写上一个啊,叫做了解这个呢,就叫带标签的,诶关键字的使用,比如说。咱们刚才提到了啊,说默认呢,你结束的是这个方了,那我能不能让它就是显示的结束这个方呢。
17:06
诶,其实对Java呢,给我们提供了这样的一个拓展的功能哈,诶你在这个for前面呢,但是目前这俩放你是区分不出来的哈,诶你在这个for前面呢,它支持你加上一个标签。比如这个标签呢,这个单词呢,我们叫做labor是吧。哎,那比如说不妨我就哎把它起名叫labor了,其实这呢也算是一个标识符意啊,你自己起个名就行,叫啥都行啊,叫L也行好,那么把这个名呢,我们就放在这儿了。是吧,我就放这儿了,那么这个时候呢,它表示就是我显示的结束的是这个标签对应的这个for。那如果是这样的话呢,你看我们这个结果是什么呀。是不是就成123了,就。啊,你看我们编译来运行,那就只有一个123。那因为呢,这时候你呃里边呢,呃123输入完以后,呃,当这个是四的时候呢,我直接就把外层这个符号给干停了。哎,就是这样一个特征,诶这个呢,大家做一个了解就行啊,平时呢,开发当中,在一些特别的算法当中呢,我们可能会用到它啊好,然后呢,下边呢,叫continue,同样的labor。
18:10
哎,这个你看啊。怎么着呢?哎,这块呢,诶这个我就一边的去运行,大家你理解一下这个结果,你看还是长这样的啊,你看跟你想的一样不一样。怎么着的?哎,看一下啊说呢,一开始的时候呢,这个我们123就出来了,呃,123出来以后呢,当时四的时候呢,直接叫continue labor就开始下一次是指定的这个接加加的下一次了。呃,接压下来接就变成二了,而二一进来之后呢,呃这个呢又执行里边,呃I呢又从一开始啊,那么又没进去,然后又是123,所以这个时候呢,根本就没有执行这个换行。嗯,所以说这个123完了以后呢,紧跟着这个下下一次的这个接接变成二了以后呢,又一进来又是123,所以呢,直接在后边123。
19:01
呃,然后呢,再continue labor的时候呢,又接加加,然后又123123,诶,所以就放到一行上去了。行啊,这个呢,大家下来呢,稍微的体会一下,诶这两个的话呢,大家做一个了解就可以了。啊,我在上面的稍微的也写一下,这呢算是咱们的,哎,第一个内容的话,嗯,第二个内容。哎,这个我们写一下啊。哎,叫哎了解。呃,带标签的。哎。哎和啊,Continue的使用。好,这个呢,纯是个了解,我讲完之后呢,诶也就过了啊,以后呢,我们在相应的一些题目当中,如果你见到了这个,诶,你知道是怎么回事儿就可以了,然后另外呢,从这个呃,开发经验上来讲啊,我们说在这个开发中,这个break的一个使用频率哈,啊,要远高于continue。啊,要。远高于啊,Continue。甚至说呢,有一些这个算法的操作呢,我们可能就诶你可以用肯定语去写,我们也可以呢,把它改造一下呢,就避开了,肯定有这个关键字了,诶这个也是有可能的,诶那咱就具体问题到时候具体分析就可以了啊行,那么这样的话呢,咱们关于这两个关键字呢,其实也就告一段落了,诶大家主要的还是看一些题目当中,我们诶是不是能够完成特定的一些题目就行了,哎两个关键字其实并不难啊OK。
我来说两句