7、流程控制
一、流程控制
流程控制决定程序是如何运行的,主要有三大流程控制语句
- 顺序控制
- 分支控制
- 循环控制
二、顺序控制
程序从上至下依次执行
三、分支控制
1、条件语句
(1)单分支
-
格式:
if (条件表达式) { 执行代码块; }
-
功能:如表达式为true,则执行语句
(2)双分支
-
格式
if (条件表达式) { 执行代码块1; } else { 执行代码块2; }
-
功能:如表达式为true,则执行代码块1,若为false,则执行代码块2
(3)多分支
-
格式
if (条件表达式1) { 执行代码块1; } else if (条件表达式2){ 执行代码块2; } ... } else { 执行代码块n; }
只有一个执行入口,只执行一个代码块
(4)嵌套分支
在一个分支中完整地嵌套了另一完整的分支结构,里面称为内层分支,外层分为外层分支
建议嵌套不要超过3层,可读性差
(5)switch分支
-
格式
switch (表达式) { case 常量1: 语句块1; break; case 常量2: 语句快2; break; .... case 常量n: 语句块n; break; default: default语句块; break; }
-
流程
- switch关键字表示switch分支
- 表达式对应一个值
- 当表达式的值等于常量1,执行语句块1
- break表示退出switch
- 顺序执行,不等于常量1,匹配常量2
- 若无匹配的,则执行default语句
-
注意事项
- 表达式数据类型应和case后的常量一致,或是可以自动转换的数据类型
- 表达式的返回值必须是:byte, short, int, char, enum(枚举), String
- case子句中的值必须是常量,而不能是变量
- default子句是可选的,当没有匹配case时,执行default语句
- 顺序执行,执行break则跳出switch
2、循环语句
2.1 for循环
(1)for循环
-
语法
for (循环变量初始化; 循环条件; 循环变量的迭代) { 语句块; }
-
功能:重复执行某些代码块
-
流程:
循环变量初始化
——》循环条件
——》语句块
——》循环变量的迭代
——》循环条件
——》...——》循环迭代
——》循环变量的迭代
——》结束 -
注意事项:
- 循环初始化变量和迭代可以写在其他地方
- 初始化和迭代可以有多条语句,用逗号隔开
(2)用for来实现无限循环
-
语法
for ( ; ; ) { if (x < 20) break; x++;//借助if,实现跳出条件逼近 }
(3)foreach语句
说明:foreach是for语句的特殊简化版,foreach并非关键字,而是for的一种特殊格式,用来遍历
-
语法
for (元素变量x: 遍历对象obj) { 引用了x的语句; } //例子 int[] arr = {1, 3, 5}; for (int x: arr) { sout("x");//输出1,3,5——遍历 }
2.2 while循环
(1)while循环
-
语法
while (循环条件) { 循环体; 变量的迭代; }
-
功能:重复执行循环体
-
流程:
循环条件
——》循环体
——》变量迭代
——》循环条件
——》...——》变量的迭代
——》循环条件
——》结束
(2)do while 循环
-
语法
do { 循环体; 迭代; } while(循环条件);
-
流程:
循环体
——》迭代
——》循环条件
——》循环体
——》...——》迭代
——》循环条件
2.3 多重循环
建议不超过3层
四、循环控制
1、break语句
-
功能:当某个条件满足时,终止循环,跳出语句,(就近跳出,只有一层)
-
跳出指定层:break语句出现在多层嵌套的语句中时,可以通过标签指明要终止的层
label1: { label2: { label3: { ...; break lable2;//跳出label2 ...; } } }
-
注意事项
- break可以指定退出至哪一层
- label是标签,名字由程序指定
- 实际开发尽量不使用
- 若break没指定,则跳出最近的循环体
-
2、continue语句
- 功能:结束本次循环,进入下一次循环的条件测试部分
- continue同样支持标签功能
3、return 语句
在方法中使用,表示退出所在方法