难度
初级
学习时间
30分钟
适合人群
零基础
开发语言
Java
开发环境
- JDK v11
- IntelliJ IDEA v2018.3
1.什么是流程控制语句?
第一句:
源文件中的语句通常按照它们出现的顺序从上到下执行。
什么是源文件?
在Java中,源文件就是Java类型的文件。
什么是语句?
以分号结尾的就是一条语句。上面有4条语句。
那什么又是“按顺序从上到下执行”?
我们来看一段示例代码:
这个程序输出的结果是:
输出的结果的顺序和它对应的输出语句顺序一致,也是从上到下,依次执行输出。
接着往下看下面一段话:
但是,流程控制语句通过使用决策,循环和分支来分解执行流程,使您的程序能够有条件地执行特定的代码块。
其中,我们的程序执行顺序是可以被控制的,也就是说原来显示输出的是“ABCD”,那么我可以让他只输出“AD”,怎么做到的呢,那就需要和流程控制语句的配合。流程控制语句有三类:
决策语句:if-then,if-then-else,switch
循环语句:for,while,do-while
分支语句:break,continue,return
接下来,本章讲解循环语句while。
2.显示输出“生日快乐”100遍
在讲解循环语句while之前,我们先来看一个问题:显示输出1遍“生日快乐”。
代码体现:
运行结果:
现在,我们需要说10声“生日快乐”,也就是显示输出10遍“生日快乐”。
代码体现:
运行结果:
那么,要说100遍呢?写100遍?不光是累死,效率也太低了,有没有一种办法,我想说多少遍,自动显示输出多少遍。换言之,我想说100遍“生日快乐”,然后将“生日快乐”循环100遍。
循环在Java中怎么表示呢?下面我们就来一起学习Java中是怎么循环的。
3.循环语句while
循环语句会重复执行,直到 条件表达式 为false结束。
循环语句while格式如下:
在循环刚开始时,会计算一次条件表达式的值。
举一个例子,比如,我们需要显示输出3遍“生日快乐”。
首先我们得先用一个数字记录当前已经说了几遍“生日快乐”,说到第三遍的时候就停下来。于是,定一个整数类型的变量来记录说话的次数:
用count变量来记录说话的次数,因为最初一句话都没说,所以说话的次数就是0。后面说一次话就+1次。
接着,我们需要来写while循环的条件表达式,因为我们要说三遍“生日快乐”,所以说话的次数不能超过3次:
代码书写完毕,好像可以了,运行看看:
完了,发现停不下来,为什么停不下来呢?不是说好了说三次就停止吗?
怎么没有停下来呢?
我们回过头来看看,最初说话的次数是0,说第一次话的时候,count应该为+1才对,0+1=1,说第二次话的时候1+1=2,说第三次话的时候2+1=3,说三次就够了,就可以停下来了。但是,我们的程序并没有累加count,也就是没有累加说好次数,导致说好次数一直是0,count<3一直为true,循环体一直被执行。
接下来,我们更改代码:
运行结果:
程序正常了。这也给我们一些结论:
while由循环条件、循环体两部分组成。
循环条件(被小括号包裹着):
循环体(被大括号包裹着):
我们来看一下循环语句的执行过程:
第一次循环,count = 0;count < 3;循环条件返回true。执行循环体,count++,此时count = 1;然后显示输出“生日快乐”;
第二次循环,count = 1;count < 3;循环条件返回true。执行循环体,count++,此时count = 2;然后显示输出“生日快乐”;
第三次循环,count = 2;count < 3;循环条件返回true。执行循环体,count++,此时count = 3;然后显示输出“生日快乐”;
while循环还没结束,第四次循环,count = 3;count < 3;循环条件返回false。循环结束。
4.结束循环break
循环可以有两种方式结束:
- 由循环条件结束
- 由break、return结束循环
上面一小节展示了,循环自然结束。接下来,演示由break来结束循环。
break这个关键字上一章在switch里面,我们使用过,它的作用是跳出switch语句体。在循环语句中,break的作用是跳出循环体。
好我们来试试,举一个例子,显示输出10以内的数字,当当前数字加5等于10时,停止循环。
分析:
要显示输出10以内的数字,那么就得循环10次。
当当前数字加5等于10时,停止循环。
书写代码:
运行结果:
输出“0、1、2、3、4”,正确无误。
之所以能随时停下来,是因为这句代码:
是关键字break的作用。
break可以让跳出循环语句,结束循环。
5.返回结果return
循环可以有两种方式结束:
- 由循环条件结束
- 由break、return结束循环
上面小节展示了,循环自然结束和break。接下来,演示由return来结束循环。
准确来说,return不是结束循环用的,而是返回结果用的。而且它还只能存在于方法中。方法这个概念后面具体讲解,我们先来简单的定一个方法:
新定义的方法是sum,现在我们完成方法体:
接着,可以看到,sum方法体中就是我们上一小节的内容,只不过将它们移到了sum方法体中,然后我们来调用:
运行结果:
我们来验证一下这个结果正不正确。上一小节的结果是“0、1、2、3、4”,将它们加一起就是0+1+2+3+4=10,结果正确。
可以看到的是,return这个关键字起作用了,但是,return的作用主要不是用来结束循环的,而是返回方法结果的。这里只是返回方法结果sum的同时结束了循环,因为循环是写在方法内部的,方法都结束了,循环自然也结束了。
6.无限循环
如果我们需要显示输出“生日快乐”,让它不停的输出,永远都不停下来,直到电脑冒烟。请问该怎么做?我们看如下操作可行不可行:
循环999999999次,虽然数字很大,但是终究会停下来。唉,我们不让x累加不就好了吗?像这样:
这样的话0总是小于999999999,条件表达式总是为true。这种方法可行。但是,这样做有点low,有没有更优秀的做法。等等,前面有句话很重要“这样的话0总是小于999999999,条件表达式总是为true。”
为什么这种方法可行?
因为0总是小于999999999,条件表达式总是为true。
那是不是只要条件表达式总是为true就行?
对的。
好,我们来改造程序:
运行结果:
显示输出停不下来。
7.跳过本次循环continue
需求:
显示输出10以内的数字,但是请跳过加5等于10的数。
思路:
使用while循环,然后在循环体里面通过if语句打印那些加5不等于10。
实现:
结果:
可以看到,达到了我们的目的,但是如果我们再加多个条件的话,那if语句就要嵌套。如果我们能跳过不符合条件的情况就好了。
接下来,给大家介绍一个新的关键字:continue。作用是跳过本次循环。
改造之前的程序:
结果:
出现死循环,也就是无限循环。为什么会这样呢?
分析原因:
跳过了本次循环,下面的语句执行不到:
当前的x=5,由于下面的语句x++执行不到,所以x永远等于5,也就是x永远小于10,x+5永远等于10,永远在循环也永远在跳过本次循环,于是就造成了无限循环的局面。
解决:
在跳过本次循环之前累加x的值。
实现:
结果:
程序恢复正常。
总结:
- while循环由循环条件和循环体构成
- while循环条件表达式的值只能是boolean类型
- while循环可以通过break跳出循环来结束循环
- while循环可以通过return返回方法值来结束方法,从而结束循环
- while循环可以通过continue跳过本次循环
- while循环可以通过循环条件表达式总是返回true来达到无限循环
至此,Java中流程控制语句中循环语句while相关内容讲解先告一段落,更多内容请持续关注。
附:流程控制语句表
答疑
如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。
上一章
下一章
“全栈2019”Java第二十六章:流程控制语句中循环语句do-while
学习小组
加入同步学习小组,共同交流与进步。
- 方式一:关注头条号gorhaf,私信“Java学习小组”。
- 方式二:关注公众号gorhaf,回复“Java学习小组”。
全栈工程师学习计划
关注我们,加入“全栈工程师学习计划”。
版权声明
原创不易,未经允许不得转载!