流程控制语句
通过一些语句控制程序的执行流程
顺序结构
根据代码先后顺序依次执行,是java默认执行结构
分支结构
if
格式1
if(关系表达式){
语句体;
}
如果对一个boolean
变量进行判断,不要使用==
号,直接把变量卸载小括号中
格式2
if(关系表达式1){
语句体1;
}else(关系表达式2){
语句体2;
}
格式3
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else if(关系表达式3){
语句体3;
}
......
else{
语句体n+1;
}
switch
语句格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
......
default:
语句体n+1;
break;
}
这里的表达式不是一个关系表达式了,而是一个具体的结果,如果下方的值都不匹配,就会执行default;找的匹配的值,就会执行对应的语句体。
说明:
- 表达式的值的类型:取值为
byte
、short
、int
、char
,JDK5以后可以是枚举,JDK7以后可以是String - case后的值只能是字面量,且不能重复
switch的其他知识点
- default的位置和省略
a. 位置:可以写在任意位置
b. 省略:可以省略,语法不会报错,但是不建议 - case穿透
每一个case后的break省略的话,就会导致 case 穿透问题,也就是不会退出switch,将会执行满足条件的语句体之后的所有case,直至再次遇到break或所有case执行完毕退出 - JDK12提出的Switch新特性
格式如下:case里不用再写break,也不会出现case的问题int number = 1; switch(number){ case 1 -> { System.out.println("1"); } case 2 -> { System.out.println("2"); } case 3 -> { System.out.println("3"); } default -> { System.out.println("null"); } }
- switch和if第三种格式各自的使用场景
if:对范围的判断;
switch:把有限数据一一列举
循环结构
有三类:
- for
- while
- do…while
for循环
for(初始化语句; 条件判断语句; 条件控制语句){
循环体;
}
while循环
初始化语句
while(条件判断语句){
循环体;
条件控制语句;
}
for和while的对比
相同点:运行规则都是一样的
区别:
- for循环中,知道循环的次数或者循环的范围
- while循环中,不知道循环的次数和范围,只知道循环的结束条件