Day03——程序流程控制
1.定义
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑块。
2.分类
三种基本流程结构:
- 顺序结构
- 分支结构
- 循环结构
3.分支结构
if-else结构
- if语句三种格式:
if(条件表达式){
执行代码块;
}
if(条件表达式){
执行代码块1;
}else{
执行代码块2;
}
if(条件表达式1){
执行代码块1;
}else if(条件表达式2){
执行代码块2;
}else{
执行代码块3;
}
-
if-else使用说明:
- 条件表达式必须是布尔表达式、布尔变量。
- if-else可以嵌套使用。
-
针对于条件表达式:
- 如果多个条件表达式之间是互斥关系,则判断和执行语句声明顺序可换;
- 如果多个条件表达式之间有交集关系,需要根据实际情况考虑清楚哪个结构声明在上面;
- 如果多个条件表达式之间有包含关系,通常情况下需要将范围小的声明在范围大的上面。否则范围小的不会被执行。
switch-case结构
- 格式:
switch(表达式){
case 常量1:
语句1;
break;
case 常量2:
语句1;
break;
default:
语句n;
break;
}
- 说明:
- 根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入到相应的case结构中,调用其执行语句并继续向下执行,直到遇到break关键字结束;
- switch结构中的表达式可以是byte、short、char、int、枚举类型、string类型;
- case常量只可以声明常量,不可以声明范围;
- break关键字可选;
- default结构可选,且位置灵活。
4.循环结构
for循环
- 结构
for(初始化条件;循环条件;迭代条件){
循环体;
}
- 循环条件为布尔类型
while循环
- 结构
初始化部分;
while(循环条件){
循环体;
迭代部分;
}
- 循环条件为布尔类型
do-while循环
- 结构
初始化部分;
do{
循环体;
迭代条件;
}while(循环条件);
- 循环条件为布尔类型
- do-while循环至少执行一次循环体
如何选择循环结构
- 遍历有明显的循环次数需求,使用for循环。
- 遍历没有明显的循环次数需求,使用while循环。
- 如果循环体语句块至少执行一次,可以考虑使用do-while循环。
- 本质上三种循环之间完全可以相互转换,都能实现循环的功能。
无限循环格式
- while(true)
- for( ; ; )
- 需要根据循环体内部的条件来控制循环的结束。
- 开发中,有时并不确定需要循环多少次,需要根据循环体内某些条件,来控制循环的结束(使用break)。
- 如果循环结构不能终止,则构成了死循环。
5.嵌套循环(多重循环)
-
将一个循环放在另一个循环体内,就形成了嵌套循环。其中, for ,while ,do…while均可以作为外层循环或内层循环。
-
实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
-
设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。
-
外层循环控制行数,内存循环控制列数。
public class p53_test_2 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i + "*" + j + "=" +(i*j)+" ");
}
System.out.println();
}
}
}
6.break关键字
- 用于终止某个语句块的执行。
- 出现在多层嵌套的语句块中时,可以通过标签label指明要终止的是哪一层语句块。
- 只能用于switch语句和循环语句中。
7.continue关键字
- 只能使用在循环结构中。
- 用于跳过其所在循环语句块的一次执行,继续下一次循环。
- 出现在多层嵌套的循环语句体中时,可以通过标签label指明要跳过的是哪一层循环。
8.return关键字
-
并非专门用于结束循环的,它的功能是结束一个方法。 当一个方法执行到一个return语句时,这个方法将被结束。
-
与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。