浅谈流程控制语句

42 篇文章 0 订阅

在一个程序的执行过程中,语句的执行顺序对运行的结果是有着直接影响的。有时候我们需要控制语句的执行顺序来完成我们想要实现的功能。所以掌握流程控制语句的使用是非常有必要的。
流程控制语句分为了三种:顺序结构、选择结构以及循环结构。

顺序结构

顺序结构是流程控制语句中最简单的,它没有什么复杂的语法,也没有什么特定的语法结构。依照程序中代码的先后顺序,顺序依次执行。
概括来说顺序结构可以总结为:写在前面的代码先执行,写在后面的代码后执行。

顺序结构的执行流程如下:
从上往下,依次执行。
在这里插入图片描述

选择结构

选择结构也称为分支结构,顾名思义,选择结构就是有分支的,要根据条件选择一个分支往下执行。
选择结构有其特定的语法结构,要根据具体的逻辑运算(逻辑运算有两种 true和false)来进行分支的选择,根据不同的选择执行不同的代码。

选择结构有两种:if语句和switch语句。

if语句

if语句有三种形式。

形式一
if(比较表达式或boolean类型的值){
语句体;
}

执行流程为:

  • 先执行if括号里的语句,如果是表达式则计算表达式的值,看值是true还是false。如果是boolean类型的值就直接看其实true还是false。
  • 若为true,则执行if大括号里的语句体。
  • 若为false,则不执行大括号里的语句体,直接执行if语句后面的语句。
    在这里插入图片描述

形式二
if(关系表达式){
语句体1;
} else {
语句体2;
}

执行流程为:

  • 先计算if括号里的关系表达式的值,判断值是为true还是false
  • 若为true,则执行语句体1
  • 若为false,则执行语句体2
    在这里插入图片描述

形式三
if(关系表达式1){
语句体1;
} else if(关系表达式2){
语句体2;
} else {
语句体3;
}

执行流程为:

  • 先计算关系表达式1的值,判断值是true还是false
  • 若为true,则执行语句体1
  • 若为false,则计算关系表达式2的值,判断值是true还是false
  • 若为true,则执行语句体2
  • 若为false,则执行语句体3

在这里插入图片描述

switch语句

switch语句的格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
. . .
default:
语句体n+1;
break;
}

语句的执行流程

  • 先判断switch括号里的表达式的值
  • 再将判断的值与每个case项里的值依次进行比较
  • 若相等就执行该case项里的语句
  • 若不相等就接着往下比较
  • 若没有case项的值与表达式的值相等,就执行default里的语句

对switch语句的说明:

  • switch语句表达式里的值可以是byte、short、char以及int类型;JDK5之后还支持枚举类型,JDK7之后支持String类型。
  • case后面跟的是要跟表达式的值进行比较的值
  • 语句体部分可以是一条语句也可以是多条语句
  • break的意思是中断,结束,执行break语句可以结束switch语句
  • default语句时默认语句,即当所有的case值都与表达式的值不匹配时,就执行default语句的内容,该语句类似if语句的else。

在使用switch语句需要注意的是:

  • case后面跟的只能是常量,不能为变量,而且多个case后面跟的值不能相同
  • switch语句的中default语句可以省略不写,但是最好还是写上,这是对所有case项的值不等于表达式的值的一种提示
  • 同样,break语句,也可以省略不写,但是省略之后的结果可能不是我们想要的(会出现case穿透的现象:一直往下执行直到遇到break语句或者switch语句执行结束),所以最好还是写上
  • 在写default语句的时候,我们一般将它放在switch语句的最后面,其实default语句可以放在任意位置
  • 对于switch语句而言有两种结束的条件:要么是遇到break要么是程序执行完

我们在做判断的时候,有两种选择语句,那么我们该如何进行选择呢?
在下面这几种情况我们可以考虑使用if语句:

  • 针对一个范围的判断
  • 针对结果是boolean类型的判断
  • 针对是几个常量值的判断(也可以使用switch语句)

循环结构

谈到循环结构,就不得不提使用循环结构的场景了,当我们需要反复执行一段代码的时候,就需要考虑使用循环结构了。
那么什么是循环结构呢?简单来说,就是在满足循环的条件时,反复执行同一段代码(称这段代码为循环体语句),直到不满足循环条件结束为止。

循环结构细分为for循环、while循环以及do . . .while循环。

for循环

for循环的格式:
for(初始化表达式语句;判断条件语句;控制条件语句){
循环体语句;
}

for循环的执行流程:

  • 先执行初始化表达式语句
  • 再执行判断条件语句,看其返回值是true还是false
  • 若为true就继续执行,执行循环体语句,继而执行控制条件语句
  • 若为false就结束循环
    在这里插入图片描述
    使用for循环需要注意的是:
  • for循环的循环语句体若是一条语句,大括号可以省略不写,若是多条语句,大括号不能省略。所以不论是多条语句还是一条语句,都加上大括号
  • for循环的判断条件语句不论有多复杂或多简单其值都是boolean类型的
  • 有左大括号就没有分号,有分号就没有左大括号

while循环

while循环的格式:
初始化表达式语句;
while(判断条件语句){
循环体语句;
控制条件语句
}

while语句的执行流程:

  • 先执行初始化表达式语句
  • 执行判断条件语句,看其值是true还是false
  • 若为true,则继续执行,执行循环体语句,执行控制条件语句
  • 若为false,则结束循环

while语句的执行流程图同for语句:
在这里插入图片描述

do . . .while循环

do . . .while循环的格式:

初始化表达式语句;
do{
循环体语句;
控制条件语句;
}while(判断条件语句);

do . . .while循环的执行流程为:

  • 先执行初始化表达式语句
  • 进入do . . .while循环,执行循环体语句,执行控制条件语句
  • 执行判断条件语句,看其值是true还是false
  • 若为true,则继续循环,执行循环体语句和控制条件语句
  • 若为false,则结束循环
    在这里插入图片描述

虽然for循环、while循环以及do . . . while循环都可以用来表示循环结构,但是三者还是有区别的。

  • 在三个循环结构中,对于for循环和while循环来说,当判断条件为false时,不会去执行循环体语句就立即结束循环。而do . . . while循环是先执行循环体语句,再执行判断条件语句,当判断条件为false,再结束循环。相比for和while来说,do . . .while至少执行一次循环体语句。
  • 当知道循环次数的时候,可以使用for循环,当不知道循环次数但是知道循环结束条件时,可以使用while循环
  • 在不知道使用什么循环语句时,可以先考虑使用for循环,其次是while循环,最后是do . . .while循环。
  • 想在循环结束后,继续使用控制条件语句的变量的时候,可以考虑:
    1. 使用while循环
    2. 使用for循环时,是括号里执行的初始化表达式语句的,当for循环结束后,会释放变量的内存空间(提高内存使用效率);若非要用for循环且不考虑提高内存效率时,可以将初始化表达式语句写在for循环的前面

死循环

死循环,即靠自身控制无法终止的循环。
以下是死循环的例子:
for(;;){
}
while(true){
}
我们在写循环语句的时候,一不小心就可能写成死循环,一定注意控制条件语句的变量的问题。

控制跳转语句

掌握了循环语句后,就需要掌握控制跳转语句。在写循环的时候,到了某一步程序实现不了,需要结束或者需要进入到下一次循环,在这种情况下,控制跳转语句就发挥作用啦。

控制跳转语句有:break(中断)、continue(继续)以及return(返回)。

break

break:中断。用于中断当前程序的执行,接着执行后面的程序。

break语句可以用在

  • switch语句里(结束switch语句)
  • 循环语句里:单层循环,直接跳出循环;多层循环,若语句没有标签(标签的格式: 标签:语句),就跳出最里层的循环,若有标签,就跳出该标签对应的循环语句。

continue

continue:继续。用于结束本次循环,继续下次循环。
continue语句一般用在循环语句里。

return

return:返回。即退出一个方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值