一、判断
1.应用场景
只有满足一定条件,对应的代码才会执行。
2.if-else语句
java
//格式
if(关系表达式){
语句;
}
else if(关系表达式){
语句;
}
else{
语句;
}
(1)执行规则
当关系表达式的结果为真时,执行大括号里面的语句,为假则不执行。
二、选择
1.应用场景
根据条件不同执行不同代码块的结构
2.switch-case语句
java
//格式
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
......
default;
语句体n;
break;
}
(1)执行规则
先计算表达式的值,依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行过程中,遇到break就会结束。如果所有case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句。
*表达式的结果可以是字符、整数(byte、short、int)(不能是long)、枚举、字符串;
*case被匹配的值,只能是真实数据,不能写变量;
*case的值不允许重复;
*break表示结束switch语句;
*default是当所有情况都不匹配时执行。
(2)default的位置和省略
case和default的位置没有标准的上下之分,位置可以任意书写。为了代码可读性,一般case从小到大书写,将default语句写在最后面。
default是可以省略不写,此时若所有的case都不匹配,则没有任何的输出结果。
(3)case穿透
在写代码时,如果break没有写,此时会触发case穿透现象。
表达式结果和case语句进行匹配,匹配后会执行对应的语句,执行语句时没有遇见break,程序会继续执行下一个case的语句体,直到遇到break或者运行完整个switch语句。
(4)switch新特性
①箭头
java
//格式
switch(表达式){
case 1->{
语句体1;
}
case 2->{
语句体2;
}
case 3->{
语句体3;
}
......
default->{
语句体;
}
}
使用箭头时不写break不会产生穿透现象,后面只有一个语句时,大括号可以省略。
②case后面可以写多个值
值和值之间用逗号隔开。
③switch可以有运行结果
④yield关键字
在switch表达式中,yeild关键字用于返回值。
java
//举例
String dayType=switch(day){
case "MON""TUE""WED""THU""FRI"->{
yield "Weekday";
}
case "SAT""SUN"->{
yield "Weekend";
}
default ->{
yield "不存在";
}
};
若语句只有一句,大括号和yield可以省略。
*在JDK14版本以上可以使用。
(5)if语句和switch语句使用场景
if语句用于对范围的判断,switch语句中常用于case的值是有限的。
三、循环
1.循环要素
初始化语句(开始条件)、条件判断语句(结束条件)、条件控制语句(控制条件)、循环体语句。
2.for循环
java
//格式
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
3.while循环
java
//格式
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
4.for循环和while循环对比
当知道循环次数或者循环范围时常用for循环,不知道循环的次数和范围,只知道循环到结束条件时常用while循环。
5.do...while循环
java
//格式
初始化语句;
do{
循环语句;
条件控制语句;
}while(条件判断语句);
do...while循环先执行循环语句,再进行判断,所以循环体至少执行依次。for循环和while循环都是先判断再执行。
6.无限循环(死循环)
java
//格式
//for循环
for(;;){
循环语句;
}
//while循环
while(true){
循环语句;
}
//do...while循环
do{
循环语句;
}while(true);
for循环中的初始化、条件判断、条件控制语句都可以省略,但是分号不能省;while和do..while循环中括号里的true都不能省。
在无限循环后面不能写任何代码,因为程序不会到达。
7.break
break是关键字,表示结束、跳出,不能单独书写,要用于switch语句或循环中。
8.continue
continue关键字,写在循环中,表示结束本次循环,进入下一次循环。
9.循环嵌套
一个循环体内部可以包含另一个循环体,外层循环没执行一次,内层循环会完成内部代码所有的迭代。