判断
只有满足对应条件,对应的代码才能执行
if(关系表达式){
}else if{
}else{
}
细节相关:
if语句大括号的位置
左括号写在上一行的末尾,不要单独写一行
if语句大括号的省略
如果大括号中语句体只有一行,大括号可以省略
小括号后面不能有分号
括号中结果要是布尔类型
选择
把所有的选择列举出来,根据不同的条件任选其一
switch(){
case 1:
语句1;
break;
case 2:
语句2;
break;
……
default:
语句体n;
break;
}
执行流程:
首先计算表达式的值
依次和case后面的值进行比较,如果有相应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束
如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句
细节说明:
表达式:结果(字符/整数byte short int/枚举/字符串)
case:被匹配的值,只能是真实的数据
case:值不允许重复
break:表示中断,结束的意思,结束switch语句
default:所有情况都不匹配,执行该处的内容
default位置和省略情况
位置:case和default没有标准上下之分,位置可以任意的书写
省略:default是可以省略不写的,在此时如果所有的case都不匹配,则没有任何的输出结果
case穿透
写代码时,若break没写,就会出发case穿透。
过程:
拿着小括号中表达式的值跟下面的case进行匹配
如果匹配上了,就会执行case里面的语句体,遇到break结束整个的switch(正常情况)
如果在执行语句体的时候设有着到break,那么程序会继续执行下一个case的语句体,直到遇到break或者运行完整个的switch为止
switch的新特性(jdk14+)
箭头标签
switch(){
case 1->{
//不需要break
}
}
case后面可以有多个值
switch(){
case 1,2,3->{
//不需要break
}
}
switch可以有运行结果
int number = 3;
String name = switch(number){
case 1,2,3->{
//若只有一行,可以直接省略大括号和yield
yield "三"
}
}
switch和if的使用场景
if:用于对范围的判断
switch:case的值是有限的
case选项有限,优先使用switch,若是范围则选择if


