java基础知识梳理(四):流程控制
基本介绍
在程序中,程序运行的流程控制决定程序如何执行
总体分类
- 顺序控制
- 分支控制
- 循环控制
顺序控制
概念
顺序控制是指从上到下逐行地执行,中间没有任何判断和跳转
细节
变量必须先定义再使用,即遵循顺序控制
java定义变量时采用合法的前向引用
1 |
|
分支控制
单分支if
1 |
|
双分支if-else
1 |
|
多分支else-if
1 |
|
switch
基本语法
1 |
|
流程图
细节
-
表达式的返回值应该是一个常量(byte、shoirt、int、char、enum、String等常量),且表达式和常量之间应该满足自动类型转换规则
-
switch穿透:没有break语句会执行下一个case语句中的代码块
break语句用来执行完一个case分支后使程序跳出switch语句块,如果没有写上break,程序会顺序执行到switch结尾
-
default语句可选,没有defalut语句时相当于下面的语句
1
2default:
break;
嵌套分支
顾名思义,嵌套分支就是在一个分支结构里又嵌套了另外一个完整的分支结构,里面的分支结构称为内层分支、内层分支外面的分支结构称为外层分支
注:嵌套分支结构内外层分支可以是任何一种分支结构,且内外层是相对而言的
1 |
|
循环控制
基本概念
可以让程序循环执行的控制语句
for
基本语法
1 |
|
流程图
执行过程
- 循环变量初始化,赋予循环变量初值
- 判断循环条件是否成立,如果成立,执行for循环体中的代码块,循环变量迭代,再次判断循环条件是否成立
- 重复1、2步,直到循环条件不成立,退出循环
细节
- 循环条件是返回一个boolean值的表达式
- for(循环变量初始化; 循环条件; 循环变量迭代)中的初始化和变量迭代可以写到其他地方(或省略),但是两边的分号不能省略
- 循环初始值可以有多条初始化语句,但要求初始化语句之间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,迭代语句之间也要求用逗号隔开
while
基本语法
1 |
|
流程图
执行过程
- 先判断循环条件是否成立,如果成立,进入循环体,执行循环体语句
- 执行完毕循环体语句后,再次判断循环条件是否成立,如果成立,则重复第2步,直到循环条件不成立,退出while循环
细节
-
循环条件是一个返回布尔值的表达式
-
while循环时先判断再执行语句
do-while
基本语法
1 |
|
流程图
执行过程
- 先执行循环体语句,执行完毕后再判断循环条件是否成立,如果成立,则继续执行循环体语句
- 重复1,直到循环体语句不成立,退出循环
细节
- 与while语句不同,do-while先执行循环体语句,再判断循环条件
- do-while语句最后有一个分号
;
多重循环
介绍
多重循环也叫循环嵌套,是将一个循环放在另外一个循环体内的复合语句,for、while、do-while都可以作为外层循环和内层循环
代码示意
1 |
|
细节
- 多重循环就是把内层循环当成外层循环的循环体,只有内层循环的循环条件为false时,才会完全跳出内层循环,这时进入下一次外层循环
- 理论上多重循环可以嵌套无数层,但是一般建议使用两层,最多不要超过三层,否则代码的可读性很差
break和continue
break
介绍
break语句用于终止某个语句块的执行,一般用在switch语句或者循环控制(for、while、do-while)语句中
基本语法
1 |
|
continue
介绍
continue可用于循环语句(for、while、for-while)的循环体中,用于终止本次循环,直接进行下一次循环
基本语法
1 |
|
label标签
基本介绍
label标签可以给循环做标签标记,这样break可以指定跳出哪层循环、continue可以指定直接执行下一次哪层循环
基本语法
1 |
|
细节
- 假如break和continue没有指定标签,则默认作用于最近的循环体
- 标签名不一定非要是label1、label2……,名称可自定义
- 应尽量少使用标签,因为破坏了顺序控制结构和可读性
return
介绍
return使用在方法中,表示退出所在的方法
基本语法
1 |
|
细节
- 如果return写在main方法中,表示退出整个程序
- return后面可以有返回值,但返回的实际内容应该与方法声明的返回值类型匹配或者可以进行自动类型转换
- 若方法的返回值类型声明为void,则可以不写返回值、甚至可以省略return,省略return的作用效果等价于return在方法体的最后一行