流程控制语句
控制语句就是掌握程序的流向,使程序按业务逻辑目的运行的代码。即用来实现对程序流程的选择、循环、转向和返回等进行控制。与生活相关,比如你开车上下班,正常时,往前直行:遇到岔路口得思考,是不是该转弯了?如果是自己的目的地, 转弯即可。每一天都是重复相同的路线,从家里到公司,然后公司回到家里,日复一日,年复一年。
顺序执行
自上而下依次执行
选择执行
按照不同选择,执行不同的代码
循环执行
做一些重复的代码
几乎在所有的语言理都存在大同小异的流程控制语句,一般分为三种:
- 顺序结构 从上往下,依次执行
- 选择结构 按照不同的选择,执行不同的代码
- 循环结构 做一些重复的代码
一、顺序控制
JAVA 的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。顺序结构是最简单的算法结构,语句与语句间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,任何算法都依赖这种基本算法结构。
顺序结构在程序流程图中的体现就是用流程线将程序框自上而下地连接起来,按顺序执行算法步骤
二、选择控制
1)if选择
根据分支为一个、两个或多个分为:
单分支
if(boolean 类型表达式){
//条件为true执行的代码块
}
双分支
if(boolean 类型表达式){
//条件为true执行的代码块
}else{
//条件为false执行的代码块
}
多分支
if(boolean 类型的表达式1){
语句1;
}else if (boolean 类型的表达式2){
语句2;
}......
else if(boolean 类型的表达式n){
语句n;
}else{
语句n+1;
}
2)switch选择
switch选择也称定值选择,做的是等值比较。根据表达式值的不同执行许多不同的操作,switch 语句:case 标签必须是整数(byte,short,int,char)或枚举或字符串(jdk1.7 开始支持字符串)
switch(表达式){
case 值1:
语句序列;
[break];
case 值2:
语句序列;
[break];
... ... ... ... ... ...
[default:
默认语句;]
}
格式解释说明:
switch:说明这是switch语句。明白这是定值判断
表达式:可以是byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
case:后面的值就是要和表达式进行比较的值
break:表示程序到这里中断,跳出switch语句
default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else
注意事项:
A:case后面只能是常量,不能是变量,并且多个case后面的值不能出现相同的
B:default可以省略吗?
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
特殊情况:
case就可以把值固定。
C:break可以省略吗?
可以省略,但是结果可能不是我们想要的。
会出现一个现象:case穿透。
最终我们建议不要省略,因为switch语句遇到第一个满足条件的case语句,执行语句体之后,若没有break退出,
之后的case语句均不进行判断,直接执行语句体
D:default一定要在最后吗?
不是,可以在任意位置。但是建议在最后。
E:switch语句的结束条件
a:遇到break就结束了 满足结束
b:执行到末尾就结束了 自然死亡
三、循环控制
循环即重复地执行一些相同或类似的操作
1、while循环
当条件满足时执行,也叫当到型
结构
while(条件){
循环体
迭代因子
}
2、do…while
执行循环,直到条件不满足退出循环。先执行循环体,再判断
初始语句
do{
循环体;
迭代因子;
}while(布尔表达式);//分号不能缺少
3、for
灵活的循环 ( 能够确定循环次数) ,结构为:
for(初始表达式;布尔表达式;迭代因子){
循环体;
}
for 循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
for 循环在执行条件测试后,先执行程序部分,再执行迭代因子( ( 步进) ) 。
初始化部分、条件判断部分和迭代因子可以为空语句,但以“;”分开,下面的语句表示无限循环
for(;;){ //infinite loop while (true)
...
}
在 for 语句的初始化部分声明的变量,其作用域为整个 for 循环体
4、break&continue
1)break:终断
A:用在循环和switch语句中,离开此应用场景无意义。
B:作用:跳出单层循环
2)continue:继续
A:用在循环中,离开此应用场景无意义。
B:作用:跳出单层循环的一次(本次),继续下一次循环
5、死循环
死循环是指条件永远为true,注意死循环不一定是错误的,如服务器就是一个大大的死循环,不间断服务着。
A:一定要注意修改控制条件,否则容易出现死循环。
B:最简单的死循环格式
a:while(true){…}
b:for(;;){}