流程控制语句
一、流程控制
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。控制语句分为三类:顺序、选择和循环。
- 顺序结构:先执行a,再执行b
- 选择结构:如果…,则…
- 循环结构:如果…,则再继续…
二、选择结构
1.if单选择结构
if(关系表达式){语句体;}
执行流程:
-
首先判断关系表达式看其结果是true还是false
-
如果是true就执行语句体
-
如果是false就不执行语句体
2.if-else双选择结构
if(关系表达式) {语句体1;} else {语句体2;}
执行流程:
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就执行语句体2
3.if-else if-else多选择结构
if (关系表达式1) {执行语句1;} else if (关系表达式2) {执行语句2;}...} else if (关系表达式n) {执行语句n;} else {执行语句n+1;}
执行流程 :
- 首先判断关系表达式1看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就继续判断关系表达式2看其结果是true还是false
- 如果是true就执行语句体2
- 如果是false就继续判断关系表达式…看其结果是true还是false
- 如果没有任何关系表达式为true,就执行语句体n+1
注意:不要在if()后面加";"
if();{}
4.switch选择语句
switch用于选择一个分支来执行
switch(表达式) {case 常量值1:语句体1;break;case 常量值2:语句体2;break;...default:语句体n+1;break;}
执行流程:
- 首先计算出表达式的值
- 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。
- 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
switch语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),JDK7后可以是String。
注意:case的穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。
三、循环结构
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
1.for循环
for(初始化表达式①; 布尔表达式②; 步进表达式④){循环体③}
执行流程:
- 执行顺序:①②③④>②③④>②③④…②不满足为止。
- ①负责完成循环变量初始化
- ②负责判断是否满足循环条件,不满足则跳出循环
- ③具体执行的语句
- ④循环后,循环条件所涉及变量的变化情况
2.while循环
初始化表达式①while(布尔表达式②) {循环体③步进表达式④}
执行流程:
- 执行顺序:①②③④>②③④>②③④…②不满足为止。
- ①负责完成循环变量初始化。
- ②负责判断是否满足循环条件,不满足则跳出循环。
- ③具体执行的语句。
- ④循环后,循环变量的变化情况。
3.do...while循环
初始化表达式①do{循环体③步进表达式④}while(布尔表达式②);
执行流程:
- 执行顺序:①③④>②③④>②③④…②不满足为止。
- ①负责完成循环变量初始化。
- ②负责判断是否满足循环条件,不满足则跳出循环。
- ③具体执行的语句。
- ④循环后,循环变量的变化情况。
4.循环语句区别
for和while的区别:
- 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
- 在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。
while和do...while的区别:
- while循环的循环条件为false,就一次也不执行。
- do...while循环无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。这样的循环具有一定的风险性。
- 如果循环条件为true,则2种循环没有区别
5.break和continue
1.break:
我们使用 for循环 和 while循环 可以让程序重复执行代码.但是有时候我们可能在循环的中途让循环停下来.需要使用 break。
使用场景:跳出循环,提前结束循环。
2.continue:
使用场景:结束本次循环,继续执行下一次循环。