七、流程控制语句
7.1 概述
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
7.2 流程控制语句分类
- 顺序结构
- 选择结构
- 循环结构
7.2.1 顺序结构概述
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。总的来说:写在前面的先执行,写在后面的后执行
7.2.1.1 顺序结构图
7.2.2 选择结构
- 也被称为分支结构。
- 选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
- Java语言提供了两种选择结构语句if语句switch语句
7.2.2.1 if语句
if语句有三种格式
if语句 第一种格式:
if(关系表达式) {
语句体;
}
- 执行流程
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体
- 如果是false就不执行语句体
if语句 第二种格式
if(关系表达式) {
语句体1;
}else {
语句体2;
}
- 执行流程
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就执行语句体2
- 我们前面讲解过三元运算符,它根据比较判断后,给出的也是两个结果,所以,这种情况和if语句的第二种格式很相似,他们在某些情况下应该是可以相互转换的。
- if语句第二种格式和三元运算符
- 三元运算符的操作都可以使用if语句改进,反之不成立
- 什么时候不成立呢?
- 当if语句控制的语句体是一条输出语句的时候,就不成立。因为三元运算符是一个运算符,必须要求有一个结果返回。而输出语句却不能作为一个返回结果。
if语句 第三种格式
if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
- 执行流程
- 首先判断关系表达式1看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就继续判断关系表达式2看其结果是true还是false
- 如果是true就执行语句体2
- 如果是false就继续判断关系表达式…看其结果是true还是false…
- 如果没有任何关系表达式为true,就执行语句体n+1。
7.2.2.2 switch语句
JDK8及以前写法
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
JDK14以及以上的写法
不带返回值
switch(表达式) {
case 值1,值2,值3 -> 语句体1;
case 值4,值5,值6 -> 语句体2;
case 值7 -> 语句体3;
}
通过yield返回一个新值
String result = switch(表达式) {
case 值1,值2,值3 -> 语句体1; yield 返回值1;
case 值4,值5,值6 -> 语句体2; yield 返回值2;
case 值7 -> 语句体3; yield 返回值3;
}
7.3 循环结构
7.3.1 概述
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
7.3.2 循环语句的组成
- 初始化语句:一条或者多条语句,用这些语句完成一些初始化操作。
- 判断条件语句:这是一个boolean 表达式,这个表达式能决定是否执行循环体。
- 循环体语句:这个部分是循环体语句,也就是我们要多次做的事情。
- 控制条件语句:这个部分在一次循环体结束后,在下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
7.3.3 for循环语句格式
for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; }
- 执行流程
- A:执行初始化语句
- B:执行判断条件语句,看其结果是true还是false如果是false,循环结束。如果是true,继续执行。
- C:执行循环体语句
- D:执行控制条件语句
- E:回到B继续
7.3.4 循环流程图
7.4 while循环
- 基本格式
while(判断条件语句) {
循环体语句;
}
- 扩展格式
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
7.4.1 while循环流程
7.4.2 do...while循环
- 基本格式
do {
循环体语句;
}while(判断条件语句);
- 扩展格式
初始化语句;
do {
循环体语句;
控制条件语句;
} while(判断条件语句);
7.4.2.1 do...while循环流程图
7.5 跳转控制语句
前面我们已经说过了,Java中的goto是保留字,目前不能使用。虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,比如说,我想在某个循环知道到某一步的时候就结束,现在就做不了这件事情。为了弥补这个缺陷,Java就提供了break,continue和return来实现控制语句的跳转和中断。
- break 中断
- continue 继续
- return 返回
7.5.1 跳转控制语句(break)
7.5.1.1 break的使用场景
- 在选择结构switch语句中
- 在循环语句中
离开使用场景的存在是没有意义的
7.5.1.2 break的作用
- 跳出单层循环
- 跳出多层循环
- 带标签的跳出
- 格式:标签名: 循环语句
- 标签名要符合Java的命名规则
7.5.2 跳转控制语句(continue)
7.5.2.1 continue的使用场景
- 在循环语句中
- 离开使用场景的存在是没有意义的
7.5.2.2 continue的作用
- 单层循环对比break,然后总结两个的区别
- break 退出当前循环
- continue 退出本次循环
7.5.3 跳转控制语句(return)
return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。这个在方法的使用那里会有详细的讲解。
八、核心语法全局图
作者:Wesky2023
链接:https://juejin.cn/post/7200982129474682917
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。