if分支结构
三种格式
if (条件表达式) {
代码;
}
----------------
if (条件表达式) {
代码1;
} else {
代码2;
}
----------------
if (条件表达式1) {
代码1;
} else if (条件表达式2) {
代码2;
} else if (条件表达式3) {
代码3;
}
. . .
else {
代码n;
}
- 执行流程
- 先判断条件1的值,如果为true则执行语句1,分支结束;如果为false则判断条件2的值
- 如果值为true就执行语句体2,分支结束;如果为false则判断条件3的值
- …
- 如果没有任何条件为true,就执行else分支的语句体n+1。
- if语句中,如果大括号控制的只用一行代码,则大括号可以省略不写。
switch分支结构
- 是通过比较值是否相等,来决定相等,来决定执行哪条分支。
switch(表达式){
case 值1:
执行代码...;
break;
case 值2:
执行代码...;
break;
…
default:
执行代码n;
}
- switch分支结构
- 先执行表达式的值,再拿着这个值与case后的值进行匹配。
- 与哪个case后的值匹配为true就执行那个case块的代码,遇到break就跳出switch分支。
- 如果全部case后的值与之匹配都是false,则执行default块的代码。
if、switch的比较
- if在功能上远远强大与switch。
- 当前条件是区间的时候,建议使用if分支结构来实现。
- 当条件是与一个一个的值比较的时候建议用switch更合适(格式良好,性能较好,代码优雅)。
switch注意事项和switch的穿透性
- 表达式类型只能是 byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
- case给出的值不允许重复、且只能是自变量,不能是变量。
- 正常使用switch的时候,如不写break,会出现穿透现象。
- 存在多个case分支代码是一样时,可以把代码写到一个case块,其他case块通过穿透性能,穿透到该case块即可。