00:00
来各位,咱们就接着往下看吧,啊,这个再往下就是关于这个多啊多呀。那么我们在这里点右键啊,我们新建一个文件吧,我们就叫做。Wellwell test。零一。来。慢慢就会了啊,可是不知道怎么表达,嗯,慢慢就会了。有一个过程啊。Public class。都。啊,TEST01。Public static void men。好了,那么这块呢,咱们来看一下这个do well,这个。语法。哎,以及它的执行原理,Do well。这个控制语句啊,或者叫循环语句。
01:02
执行原理以及语法机制啊,语法机制首先我们先看一看这个语法机制是什么,就是首先要看一看它的这个语法怎么写do。大括号。是吧,哎,然后这里是什么,是循环体啊,由Java语句构成,然后呢,在我们大括号结束之后啊,在这里有一个什么呀,有一个。啊while呢,小括号,小括号结束,千万千万要记住啊,这个后边小括号结束之后,这里有一个分号。啊,这里有一个分号。啊,这个分号千万不能丢,丢掉就完了啊,哎,这要加上这个分号啊,别的没有啊,你看这个for吧,哎,你写大括号的时候,这没不需要分号吗?哎,不需要,你写这个while的时候,哎,这个while这这块需要分号吗?哎,他也不需要啊,也不需要。啊,你想写if的话,你这块需不需要加分号啊,哎,不需要对吧?哎,它都不需要,但是这个do well这一块啊,它需要一个分号,这是为什么呢?哎,大家发现规律了吗?哎,咱们互动一下同学们,为什么它们几个都不需要加分号结尾呢?哎,原因是是什么呀?是它们都是有一个什么呀,叫做大括号的东西啊,你有没有发现它这有个大括号的东西?
02:21
对吧?哎,它这有个大括号的东西,你看哎,那么凡是有大括号的这块我们就不需要加分号,但是尴尬的是什么是do well这个东西啊,它的语法结构是这样,Do大括号完了之后Y或边个小括号,那么像这种情况的话,这一块那就得加上一个分号了啊,因为在Java语言当中啊,大括号其实代表着一种结束,大括号代表着一种结束,各位啊,大括号代表着一种结束,哎,我们的小括号它不具备结束的这个能力啊,所以在这个地方我们加一个分号。啊。好了,那这样的话,我们把这个呢就删掉就行了啊,所以这块呢,我们可能呀,需要给大家说一下这个注意啊,这个注意是什么呢?就是do well这个循环啊,Do while循环最后的时候啊,别漏掉谁呢?哎,别漏掉分号啊,别漏掉这个分号。
03:11
好啊,那么这个呢,括号这仍然跟的是一个表达式啊,叫做尔表达式。啊达好了,那么是这样一个语法结构啊,或是语法机制,那么它的运行原理是什么呢?哎,它的执行原理是啥。对吧,它运行原理或者是执行原理是什么?首先啊是这样的。这个循环和我们之前讲的这个外氧循环呀,它不太一样的地方是什么呢?氧循环上来是先判断条件,如果说你现在你这个条件是真的,我这个大括号里面代码才会执行。啊,上来的第一步是判断条件,但是到了do well这之后啊,大家发现一个问题,什么问题呢?就是do well。
04:00
这块呢,哎,他是先干啥呢。先去执行循环体一次,然后再去判断波尔表达式。啊是先斩后奏,先斩后奏啊,先执行循环体当中的。代码啊,执行一次循环体之后啊,判断布尔表达式的。结果如果为true,则继续执行什么呀?哎,循环体。如果。为什么呀,False循环怎么着,哎,结束它是这样的一个原理啊,就是说你这一块呢,是上来先做一次,做完之后再判断。啊,如果你这个值是再执行一次。然后。然后呢,再执行,再判断再执行,再判断再执行,哎,突然之间怎么着啊,哎这块怎么着啊,结果是false了,那整个这个循环就结束了,所以呢,这个do while循环啊,它比while循环。
05:08
差别在什么地方啊,就是do well,它的执行次数是循环体的执行次数是一到N次啊,那么对于这个do while循环来说啊,循环来说。循环体。至少执行一次。啊。循环体的执行次数是。一到N次。一到N次啊,但是对于Y循环来说。啊,循环体执行次数是什么呀?是零到N次啊零到N次。是这样的一个区别啊,一个区别。好了,那么这块呢,其实啊,它的代码也很简单啊,比如说我现在哎,在这写了个度之后敲个空格啊,就有提示了是吧,先别用这个提示啊。
06:09
然后呢?While。诶加一个分号啊,在这块呢,假如说我们给个int类型,哎,等于什么呀,等于零。然后接下来呢,在这呢,system.out.print打印输出呢,输出这个的值,然后紧接着I干啥呀进行。啊,进行加加,那么加加之后呢,这块我来判断一下啊,小于十,那么大家看一看这个语句来,我们不带分号,尝试一下,我们编译一下这个程序,好吧,打开这里呢,我们CMD敲进去敲回车,Java c呢,我们去编一下这个do well啊,然后我们回车。好,大家看第27行说错误啊,需要一个分号是说哪里呢?说这个位置上啊,它需要一个分号来这个报错了啊,需要分号来这块,我们先给它注释角,接下来我们把这个代码呢,再复制一份,然后贴过来放在这个位置上,然后接下来加上一个分号啊,加上一个分号之后,大家判断一下这个程序的一个执行结果吧。
07:18
来判断执行结果。各位判断执行结果来I等于零。输出吧,哎,所以先输出个零吧,佳佳是不是变成了一呀。一小于十吗?没问题对吧,然后紧接着怎么着,输出一对不对,哎,再循环输出啊,输出二输出三哎,直到输出九,输出九之后注意。啊,九加加变成十。十小于十吗?这个是false啊,所以循环就结束了,所以这个结果是零到九啊,零到九。啊,你比如说到八的时候对不对,哎,那这个八加加变成九嘛,九是不是仍然小于十啊。是不是哎,九仍然小于十,所以输出九啊。
08:03
对不对,那么接下来九加加变成十啊,十小于什么false啊false啊,所以零到九它没有十啊,没有十好了,那么接下来我们来看一看Java c呢去编译一下,然后Java去运行一下读。啊,然后零一。0123456789没问题啊,没有问题。那么接下来我再问大家一个问题,假如说我把这个程序啊,我给它注释掉,注释掉之后干嘛呢?我把这个代码改一下,各位来告诉我,如果哀加加我不写啊,我A加加写到这个地方,那你告诉我这个结果一样不一样。这个结果一样吗?来咱们还是要互动一下各位啊,互动一下来这个结果跟上面这个结果一样还是不一样啊。
09:00
来有延迟是吧,来我再说一下啊,I等于零是不是,哎,输出这会是不是输出零啊。因为I等于零嘛,I加加输出I加加不是零吗。是不是,但这行代码执行结束之后呢,I是不是会自动加一啊。哎,为什么不一样啊?为什么不一样啊?我我我不是加加,哎啊我不是加加,哎,同学们,我是A加加。A加加啊,A加加是先怎么着。加加在变量的右边是怎么说的?赋值运算。然后再自加一。对不对,所以这个代码可以拆成什么呀,什么样啊哎,In类型temp等于什么。爱家吧。是不是,哎,这样的话A值是不是先付给碳培啊。这一块输出的这个值是谁啊,是不是这个值啊。
10:00
对不对啊,哎,所以说这个应该是一样的啊,应该是一样的。当你这一行代码执行结束之后,I是不是自加了一个一啊?对不对,所以这块啊是一样的啊是一样的,来我们把这个加写到这,写到这。啊,然后接下来我们再来编译一下Java c编译Java运行。0123456789啊,跟刚才结果是一样的,各位啊一样的,来我再问大家一个问题,如果说把这个代码给它注释掉,注释掉啊,然后接下来我们在这块呢,给它改成加加I。大家想一想,这个结果应该是几呀?应该输出什么样的结果呀?A等于零。家家爱。佳佳,哎,佳佳出现变量前怎么着啊。现在这有个变量呗。Temple。对吧,等于什么呀,加加呀,加加出在变量前是怎么着啊,先自加一后赋值啊。
11:03
是不是后附上值啊?所以原先是零零加一是一呗,所以这个time是一啊,在这输出是不是一啊,所以说先输出的是不是一跟零就没关系了,对吧。那么一直假如说一直输出输出输出。II,加加I之后啊,变成几了?假如加加I之后变成八了啊,那是会输出八吧。哎,输出八之后呢,接下来再加加I是不是变成九了。对吧,九是不是小于它呀。对不对。九小于它,小于它之后呢,是不是会再执行我们这个循环体啊。再执行循环体是不是就是十了呀,输出是不是十啊。一到九一到九一到919。加变对吧,一直输出输出输出八,假如说现在加加I啊,输出是八,那证明现在这个I是多少啊,是不是就是八。
12:07
能输出加加I是八的情况下,是不是说明I这会儿已经是个八了。对吧,那输出八之后呢,八小于它啊。所以执行吧。对不对啊,执行之后是不是九啊。八加一嘛,变成九吧。所以I现在是几呀?I是不是也是九啊?I是九的话,加加I输出九的话,I本身也是九嘛。对不对,那9I9是小于十的为处,它还会继续往下循环一次吗。会不会呢?那九加加I,那这边就十啊,来我们看一下啊。Java c呢去编译一下Java去运行一下。大家看结果是一到十啊,并不是一到九啊,并不是一到九。对这块大家有什么疑问吗?
13:01
输出一到十啊。一二三四五六七八九十啊,一到十,为什么这个十会输出来呀。因为你输出加,加I等于九的时候,你I的值是不是就是九。你输出加加I是九的时候,你的I不是十啊。就说我int类型的K等于100,我问大家system.out.print打印输出,输出这个加加K,然后再输出这个K,你告诉我这俩值是多少?告诉我了,这俩值是什么?K等于多少?100加,加K多少,那是不是100啊?那现在说这个K多少,是不是100啊?是100万。101啊不不对对对对对对,什么100啊加一了加一一百零一啊,一百零一一百零一啊加加K自加一了,原先是100嘛,对不对啊,加加K之后是101对吧?哎,然后这边输入K是多少啊,是不是101啊,两个都是一百零一百对不对?哎,这边打个分线。
14:03
分割线啊来。分割线啊,分割线打一下来,这边呢,我们Java c呢,去编译Java去运行啊,大家看两个101嘛,那如果说你要是理解这个就就就就上面这个程序肯定是能够理解为啥是为啥十还能出来,因为加加I输出是九的时候,那你I的值是不是九啊。对吧,你是九的话,你九小于十对呀,为处啊,如果你为处的话,你肯定会再执行循环体啊,循环体里边再执行,那不就是十吗。再执行十的时候,你A就是十呢,十小于十,那就是false了,那这个是false就结束了嘛,对不对,哎,所以说这边呢,咱们会输出一个一到十啊一到十。那么int类型M呢等于十,比如说那system.out.print打印输出M干什么呀?加加,然后呢,在这呢,system.out.print再打印输出M,好这什么区别?你M是十啊,你M加加,你现在输入是谁啊。
15:02
是不是十啊对吧?哎,但是你佳佳只要执行结束,第五支行执行结束之后,M自己是不是会加一啊,所以第58行是不是就是11啊。对不对,一个11个11嘛,那你要是理解这个,那你就理解这个的话,那这个刚才这个程序你应该是可以理解的啊,可以理解的。加啊。啊Y循环,那这个do y循环,假如说上来它就是false,它影响不影响我们这里程序的执行呢?c.out点打印输出,我们就简单的输出一个,比如说hello word啊,Hello word hello word啊来那这边呢,我们看一下。十不是小于十不成立吗?怎么还会输出?一会我再讲一下啊,一会再讲一下。来看一下这个hello word会不会执行。Java c呢去编译Java去运行。
16:02
啊,Hello word是不是执行了。对吧,但是hellowood只输出了一次,为什么呀?哎,那道理很简单,因为这个地方条件是false啊,所以它的执行次数是一到N次啊,就是至少执行什么呀,一次循环体啊,至少执行一次循环体。那么上面这个程序呢,我觉得这样同学们啊,咱们先把这个理解一下,大家到底理解不理解出现在变量前和变量后有什么区别。先执行,后判断。呃,贵军同学,桂军。呃,十不是小于十不成立吗?怎么还会输出你说的是第几行第几行代码,我再解释一下第几行代码来,就看着我这个代码,你给我说一下第几行。闺女在吗?第几行?第48行吗?第49行。你说的是是这块代码吗。
17:06
是不是这块代码。哦,是是吧,那行,我再解释一下啊,我再解释解释,嗯。咱们慢慢来啊,I等于几等于零是不是好?那么加加I,我问大家一个问题啊,加加I。咱们这么着吧,桂军这样啊,你把这行代码给我拆成两行拆一下,来把这行代码拆成两行拆一下。这个怎么拆啊?佳佳出现在变量前。就这个代码。理解吧。就是把上面那一行代码。
18:01
拆分为。以下的。两行代码。这个加加付给了这个变量,然后变量是不是传进来了,这个加加是不是就是这个道理。那么接下来加加出现的变量前是先做自加一。先让自己加一再赋值,对吗?所以你最初是零对不对。那是零的话,加加。是出现在前,是先做自加一操作再赋值对吗?所以现在。这个I是不是就变成了一。这个是不是也就是一。输出是不是就是一呀。那程序到这I是几啊,程序执行到此处的时候。I是一对吧。因为原先是零啊。你家之后,你这边是一吧。
19:02
一小于十吗?小于十是不是直行这里呀。那加加会变变成二是吧。哎,那咱们直接看一下八个呗啊。假设现在I是八。假设啊是八小于十。没问题。加加I之后,I会变成几九,也就这个是九对吗?那么这个时候原先I是八加加I之后,这个I的值变成几了?变成九了。对不对,那九我问你。是不是还是小于十。对吧,九是小于十的对吧,所以这会儿I等于九啊,I是等于九的。哎,等于九啊。然后接下来我们再执行这里。因为你这个条件成立了呀。
20:01
因为你是九的话,九小于十条件成立了呀,条件成立的话,执行循环体呀。那你循环体里边代码会不会让你这个加加。你九再加加变成十了对吗?那你这里要不要输出十。会输出十对吗?但是紧接着。你是不是在这?I是十了,十小于十规律,这就是你刚才所说十小于十是,那这个就结束了,但是对不起,刚才这个十是不是已经输出了,是不是已经一到十已经输出完了。记住啊,是先执行循环体后判断。所以贵军有这个有这个疑问也是正常的啊,也是正常的,就是说刚才我可能没有表述清楚啊,我再强调一下,这个多样循环的特色是什么呢?不是先判断条件啊,是先执行循环条件。啊是先执行循环体,再判断它有这样一个特色啊,有这样的特性特色啊,再好好想想啊,再好好想一想。
21:08
对,好好下去之后呢,把这个案例呢,琢磨琢磨啊,琢磨一下琢磨一下啊。好了,这个呢,是关于我们所说的这个。多这个循环啊,这个语法结构我就讲这么多,各位啊,然后记住这里有一个分号啊,有分号,然后它的执行原理大家有没有理解呢?对吧,它的执行顺序是什么,是先执行什么,再执行什么,再执行什么,再执行什么。对吧,哎。
我来说两句