分支结构
if语句
-
格式
if(布尔表达式1){ 语句体1 }else if(布尔表达式2){ 语句体2 }else if(布尔表达式3){ 语句体3 } ... else{ 语句体n }
-
流程
(1)先执行布尔表达式1
(2)如果布尔表达式1的结果为真,执行语句体1,结束if语句
(3)如果布尔表达式1结果为假,跳过语句体1,判断布尔表达式2
(4)以此类推,执行到为真为止,执行对应的语句体
(5)如果以上布尔表达式都为假,则执行else中的语句体n -
注意事项
(1)只会执行一条语句体
(2)需要判断几次就有几个if,如果不需要判断多次,下面的else if和else语句都可省略
switch语句
-
格式
switch(表达式){ case 常量1: 语句体1; break; case 常量2: 语句体2; break; ... default: 语句体n; }
-
执行流程
(1)先计算表达式的值
(2)将表达式的值和常量1匹配,如果相等,执行语句体1,执行break,结束整个语句
(3)如果表达式的值和常量1不匹配,就继续和常量2匹配,如果和常量2相等,就执行语句体2,执行break,结束整个语句
(4)如果表达式的值和常量2也不匹配,一次往后和每个常量值匹配,哪一个相等就执行哪一个对应的语句体,再执行break,结束整个语句
(5)如果每一个常量值都不匹配,就执行default中的语句体n -
注意事项
(1)case后面只可以跟常量,不可以跟变量
(2)语句体后面的break,一般情况下不能省略
如果多种情况对应的语句体是相同的,可以利用case穿透,来完成代码简化
(3)default语句可以加也可以不加,如果加上一定可以执行一个语句体,如果不加,可能一句也执行不了
(4)default语句可以放在switch的任意位置,都是最后去匹配
如果放在switch语句的前面或者中间,需要跟上一个break语句,防止发生case穿透
if语句和switch语句的区别
- if语句相对比较强大,可以对任何判断使用
- switch语句做一些区间的判断麻烦,但是做一些离散型的匹配简单
- 如果使用if语句做一些离散的匹配,效率太低
循环结构
for循环
-
格式
for(初始化语句;条件表达式;初始化变量的变化){ 循环体语句; }
-
说明
(1)初始化语句:一般生命一个变脸用来记录从几开始,循环了多少次
(2)条件表达式:循环何时停止何时继续,通过条件表达式来控制
(3)初始化变量的变化:让初始化变量进行变化
(4)循环体语句:那些代码需要反复执行,这段代码就是循环体语句 -
执行流程
(1)先执行初始化语句
(2)判断条件表达式,结果要么为真、要么为假
(3)如果结果为假,直接结束整个for循环
(4)如果结果为真,执行循环体语句
(5)执行初始化变量的变化
(6)回到第二步,重新判断条件表达式 -
注意事项
(1)循环体语句可以使任意操作
(2)条件表达式必须是一个布尔表达式,必须获取一个真或假
(3)初始化变量的变化可以是增加,也可以是减少,但一定是朝着结束循环的方向变化的
(4)如果循环体语句只有一句,可以省略大括号,若果有多句,则不能省略
while循环
-
格式:
初始化变量; while(条件表达式){ 循环体语句; 初始化变量的变化 }
-
执行流程
(1)初始化变量
(2)执行条件表达式,结果要么为真要么为假
(3)如果为假,直接结束整个while循环
(4)如果结果为真,执行循环体语句
(5)执行初始化变量的变化
(6)回到第二步重新判断条件表达式
do…while循环
格式
初始化变量;
do{
循环体语句;
初始化变量的变化
}while(条件表达式);