1.顺序结构
程序默认,由上到下
2.分支结构
2.1 if语句
2.1.1第一种格式 if
格式:
if (判断条件){ //判断条件为true则执行语句;
语句;
}
2.1.2 第二种格式 if…else
格式:
if (判断条件){
语句; //为true执行;
} else {
语句; //为false执行;
}
2.1.3 第三种格式 if…else if …else
格式:
if(判断条件1){
语句体1;
} else if(判断条件2){
语句体2;
}
....
else{
语句体n;
}
2.2 switch语句
格式:
switch(表达式){
case 值1:
语句1;
break;
case 值2:
语句2;
break;
...
default:
语句体n;
break;
}
//通过匹配输入进行输出
Scanner in = new Scanner(System.in);
int week = in.nextInt();
switch(week){
case 1:
System.out.println("1")
break;
....
}
2.2.1 case穿刺:
- 产生:若switch语句中,case省略了break语句,就开始穿刺。
- 现象:当case开始穿刺,后续的case不再匹配,内部的语句都会执行。当遇见break或switch整体执行完毕,才会结束。
- 使用场景:当多个匹配条件的语句都相同时,可以使用穿刺。
//jdk14简化
num = 2;
switch(num){
case 1,2,3,4,5: //支持多个case标签
sout("工作日");
case 6,7:
}
//jdk17简化
num = 2;
switch(num){
case 1,2,3,4,5 -> {sout("工作日")}
case 6,7 -> {sout("休息日")}
}
2.2.2 if与switch
if:用于范围的判断;
switch:用于固定值判断;
3.循环结构
3.1 for 循环
格式:
for (初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
执行流程:
- 执行初始化语句;
- 执行条件判断语句,true则执行,false则循环结束;
- 执行循环体语句;
- 执行条件控制语句;
- 回到 2.
3.2 while循环
格式:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
执行流程:
- 执行初始化语句;
- 执行条件判断语句,true则继续执行,false则循环结束;
- 执行循环体语句;
- 执行条件控制语句;
- 回到2.
注意点:
- While 与 for的不同点:while的初始化语句需要在外部提前定义。for则是在参数中定义。
- 若明确循环次数,一般可采用for循环方法;若不清楚循环次数,一般可采用while循环方法。
3.3 do…while循环
格式:
初始化语句;
do{
循环体语句;
条件控制语句;
}while(判断语句);
执行流程:
- 执行初始化语句;
- 执行循环体语句;
- 执行条件控制语句;
- 执行条件判断语句,true则继续执行,false则循环结束;
- 回到2.
do…while 循环,至少循环一次。
3.4 三种循环的区别
-
for、while先判断条件,再执行循环体;do…while先执行循环体,再判断;
-
条件控制语句所控制的自增变量:
- for循环,由于归属于for语法结构中,在for循环结束后,不能再被访问;
- while循环,由于不属于while语法结构中,在while循环结束后,变量能被继续访问;
- 注意:for 与 while本质上没有区别
for(int i=0;i<5;i++){}//此种形式下,i不可在外部被访问; -------------- int i=0; //初始化语句可提到语句外; for(;i<5;){ //与while语句基本没差别 i++; //条件控制语句可放在结构内; } sout(i);//此种形式下,i可访问;
3.5 死循环
3.5.1 for 死循环
for(;;){
System.out.println("Stop!");
}
3.5.2 while 死循环
while(true){
System.out.println("Stop!");
}
3.5.3 do…while 死循环
do{
System.out.println("Stop!");
}while(true);
System.out.println("Finishi"); //此语句不可到达,因为do..while为死循环
4. 跳转控制语句
4.1 continue语句
- 跳过某次循环,开始下一次的循环;
- 基于条件控制,在循环内部使用;
for (int i=0;i<=10;i++){
if (i%2==0){
continue;
} else{
System.out.println(i);
}
}
4.2 break语句
- 作用:停止当前层级的循环体的执行;
- 基于条件控制,break只能在循环、switch中使用;
//for
for(int i=0;i<10;i++){
if(i ==5){
break; //当i==5时,结束循环
}else{
System.out.println(i);
}
}
//switch
Scanner in = new Scanner(System.in);
int num = in.nextInt();
switch(num){
case 1:System.out.println("1");
break;
...
}
5.标号
标记循环,可使用break 标号跳出指定循环;
标号名自定;
格式:
标号名:while(true){
switch(表达式){
case 1:
break 标号名;
}
}