6. 流程控制语句 p41~p58
定义:控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
6.1 顺序结构
定义:程序从上到下逐行地执行,中间没有任何判断和跳转。
知识:Java中定义变量时采用合法的 前向引用 如:
public static void main(String[] args) {
int num1 = 12;
int num2 = num1 + 2;
}
错误形式如下:num1 未定义便参与运算
public static void main(String[] args) {
int num2 = num1 + 2;
int num1 = 12;
}
思考:顺序结构是最简单的流程控制语句
6.2 分支结构
定义:根据条件,选择性地执行某段代码。
类别:有 if…else
和 switch-case
两种分支语句。
知识:
6.2.1 if-else 条件判断结构
注意:以下条件表达式必须是 布尔表达式(关系表达式或逻辑表达式)或 布尔变量,如果是 true 就执行语句块;如果是 false 就不执行语句块
- 代码如下:
if (条件表达式1) {
语句块1;
} else if (条件表达式2) {
语句块2;
}
...
}else if (条件表达式n) {
语句块n;
} else {
语句块n+1;
}
思考 :当条件表达式之间是“
互斥
”关系时,不影响语句的执行; 当条件表达式之间是“包含
”关系时,则须遵守 “小上大下
” 的原则,否则范围小的条件表达式将不可能被执行。
6.2.2 switch-case选择结构
执行过程:
-
根据 switch 中表达式的值,依次匹配各个 case 。如果表达式的值等于某个 case 中的常量值,则执行对应 case 中的执行语句。
-
执行完此case的执行语句以后:
如果遇到break,则执行break并跳出当前的switch-case结构;
如果没有遇到break,则会继续执行当前case之后的其它case中的执行语句。(case穿透)
- 代码如下:
switch(表达式){
case 常量值1:
语句块1;
//break;
case 常量值2:
语句块2;
//break;
// ...
default:
语句块n+1;
break;
]
}
注意:
-
switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);
-
case子句中的值必须是常量,不能是变量名或不确定的表达式值或范围;
-
同一个switch语句,所有case子句中的常量值互不相同。
利用 case 的穿透性,可以同时执行多个分支
6.3 循环结构
定义:根据循环条件,重复性的执行某段代码。
类别:有 for
、 while
、 do-while
三种循环语句。
循环结构四要素:1初始化部分 2循环条件部分 3循环体部分 4迭代部分
知识:
6.3.1 for 循环
- 语法格式
for(初始化语句①; 循环条件语句②; 迭代语句⑦) {
for(初始化语句③; 循环条件语句④; 迭代语句⑥) {
循环体语句⑤;
}
}
6.3.2 while 循环
- 语法格式
①初始化部分
while(②循环条件部分){
③循环体部分;
④迭代部分;
}
6.3.3 do-while 循环
- 语法格式
①初始化部分;
do{
③循环体部分
④迭代部分
}while(②循环条件部分);
思考:
1、我们可以在循环中使用break。一旦执行break,就跳出当前循环结构。
2、小结:如何结束一个循环结构?
结束情况1:循环结构中的循环条件返回false
结束情况2:循环结构中执行了break。
-
三种循环结构 如何选择?
- 遍历有明显的循环次数(范围)的需求,选择for循环
- 遍历没有明显的循环次数(范围)的需求,选择while循环
- 如果循环体语句块至少执行一次,可以考虑使用do-while循环
-
break 和 continue 的区别:
- break:一旦执行,就结束(或跳出) **当前 **循环结构
- continue:一旦执行,就结束(或跳出) 当次 循环结构