一.分支结构
1.到达某个状态时,可能会有多种情况,每种情况都需要提前准备好,所以多条路的路口就是一个分支。代码写得多,程序运行的少。
2.分类:1. if语句包括if else、if else if else
2.switch语句
二.if语句
1.格式:
if (布尔表达式) {
语句体;
}
2.执行流程
-
计算布尔表达式的值,要么为true、要么为false
-
如果计算结果为true,执行语句体
-
如果计算结果为false,就不执行语句体
3.if语句的注意事项
-
if后面跟着的小括号里面,必须是boolean的值
-
在小括号后面不要加分号,
-
语句体:可以是任意语句。如果语句体只有一句,那么大括号可以省略。但是建议所有情况都加上大括号,不要省略
三.if else
1.格式:
if (条件表达式) {
语句体1;
} else {
语句体2;
}
2.执行流程
-
计算条件表达式的值,要么是true、要么是false
-
如果条件表达式的值为true,执行语句体1
-
如果条件表达式的值为false,执行语句体2
四.if else if else
1.格式:
if (条件表达式1) {
语句体1;
} else if (条件表达式2) {
语句体2;
} else {
语句体3;
}
2.执行流程
1、计算条件表达式1,如果为true,就执行语句体1;
2、如果条件表达式1为false,计算条件表达式2,如果为true,就执行语句体2
3、如果以上表达式都不满足条件就执行else
3.if else if else 三者互斥
五.switch
1.格式:
switch (表达式) {
case 常量1:
语句体1;
break;
case 常量2:
语句体2;
break;
default:
语句体n+1;
break;
}
2.执行流程
-
计算表达式的值,分别和各个常量匹配
-
如果和常量1匹配,那么久执行语句体1,break,switch语句就结束了
-
如果和常量1不匹配,那么就判断是否和常量2匹配,如果匹配就执行语句体2,break,switch语句就结束了
-
如果以上常量都不匹配就执行default
3.注意事项
-
表达式类型:
-
jdk1.5之前:byte、short、int 、char
-
jdk1.5:枚举类型
-
jdk7:String
-
-
case后面只能跟常量,不能跟变量
-
穿透问题:如果case语句后面不跟上break
六.if和switch的区别
1.相同点:if语句和switch语句都可以表达分支结构
2.不同点:
1、if语句格式相对灵活,更加强大,switch语句相对弱小。所有的switch语句都可以被if语句替代。
2、if语句更多的是做一些连续性区间值的判断,而switch语句无法做到
3、if语句每次都需要获取表达式的值,而switch只获取一次表达式的值,所以switch的效率较高一些。