【Java】基础10:流程控制语句

时间:2022-07-22
本文章向大家介绍【Java】基础10:流程控制语句,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

什么叫流程?

我们去找工作,简历被某家公司看到后。先是前台打电话约见面时间,然后去公司,第一轮笔试,若是没通过,直接回家;若是通过了,进入第二轮项目主管面试。若是没通过,直接回家,若是通过了,要么被录取,要么第二轮第三轮面试。

这一段描述下来,找工作面试的过程就是流程。公司对面试人员的安排就叫做流程的控制。

在程序中也是一样的道理。

一、顺序结构

打电话、笔试、一面、二面、录取这就是顺序结构。

在程序中,其执行的顺序由代码编写的顺序控制,从上到下执行。

这也是最简单最基础的一种结构。

二、选择结构

还是以面试为例子,面试官会根据面试者的笔试成绩选择是否将他留下,这就涉及到选择结构了。

在Java代码中存在一种特殊的语句,叫做选择语句,对一些条件做出判断,从而选择对应的代码执行。这种由选择语句组成的代码结构就是选择结构。

选择语句有:if条件语句和switch条件语句。

1.if语句

if即如果的意思,如果笔试成绩达到80分,就进入面试,要用代码实现如下:

执行流程:

  • 首先判断布尔表达式看其结果是true还是false
  • 如果是true就执行语句体
  • 如果是false就不执行语句体

2.if…else语句

if ...else 语句是指如果满足某种条件就进行某种处理,否则就进行另外一种处理。

执行流程

  • 首先判断布尔表达式看其结果是true还是false
  • 如果是true就执行语句体1
  • 如果是false就执行语句体2

3.与三元运算符的互换

if…else语句和昨天学习的三元运算符效果是一样的

4.if…else if…else if…else语句

if…else if…else if…else可以对多个条件进行判断,进行多种不同的处理。

执行流程

  • 首先判断布尔表达式1看其结果是true还是false
  • 如果是true就执行语句体1
  • 如果是false就继续判断布尔表达式2看其结果是true还是false
  • 如果是true就执行语句体2
  • 如果是false就继续判断布尔表达式…看其结果是true还是false
  • 如果没有任何布尔表达式为true,就执行后面的与语句体。

5.switch语句

switch也是一种选择语句,和if不同的是,switch只能判断某个表达式的值,从决定执行那段代码。

下面就用一个判断星期几的例子介绍下switch语句。

注意事项

  • 表达式中的值要与case中的值数据类型一致。
  • 在switch中的表达式只能是byte、short、int、char、Enum(枚举值)、String(字符串)。用其它的类型值编译会报错。
  • break不能漏写,否则会出现case的穿透,改变逻辑。

执行流程

  • 首先计算出表达式的值
  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

6.case的穿透性

在switch语句中,若是case后面没有写break,将会出现穿透现象,不在判断下面的值,而是直接往下运行,直到遇到break为止,或者整体switch结束,这就是case的穿透性。

这不是bug,能够用来解决某些需求。

例如,周一到周五是工作日,周六周日是双休日。

三、循环结构

什么叫循环结构呢?

最常见的例子就是钟表了,每天从0点到24点不停地循环。

在Java语言中,有一种特殊的语句叫做循环语句,可以实现代码的重复执行,这种由循环语句形成的结构就是循环结构。

1.for循环

例子:循环打印10遍“HelloWorld”

执行流程

  • 执行顺序:①②③④>②③④>②③④…②不满足为止。
  • ①为初始化语句(int i=0)
  • ②为判断语句(i<10?),不满足则跳出循环
  • ③为循环体,满足判断条件就执行
  • ④为控制条件语句,循环后变量会变化

格式

格式是灵活变通的,三种格式都可以使用

2.while循环

和for循环是一样的,只不过关键字不一样

执行流程

  • 执行顺序:①②③④>②③④>②③④…②不满足为止。
  • ①为初始化语句(int i=0)
  • ②为判断语句,不满足直接跳出循环
  • ③为循环体,满足判断条件就执行
  • ④为控制条件语句,循环后变量会变化

3.do…while循环语句

do…while语句特点:

  • while后面有分号结束(切记)
  • 无论如何,循环体语句都会先执行一次,再去判断条件满不满足

执行流程:

  • 执行顺序:①②③>④②③>④②③…④不满足为止。
  • ①是初始化语句(int i=0)
  • ②是循环体语句(先执行一次,后面判断条件满足再执行)
  • ③是控制条件语句,循环后变量会变化
  • ④是判断语句,不满足条件循环就会跳出

4.循环语句的区别

由上可以看出:

  • 变量i在for循环外就不能访问了(for循环的常规格式不能访问,for循环的其他两种格式也能访问)
  • 变量i在while循环外也能被访问

由此可以引申一个概念:变量作用域

也就是说一个变量在某个范围内才有效,超出这个范围就不能访问了,这个范围就是该变量的作用域。

一般变量的作用域就是和它最近的一个大括号内。

也有特例就是上面说的for循环,只在循环内有效。

5.死循环

什么叫死循环?

就是判断语句永远为true,死循环不会结束循环,会一直循环下去

DOS系统中,若是出现死循环,可以按Ctrl+C结束死循环。

6.嵌套循环

顾名思义,在一个循环语句里面再定义一个循环语句,就是嵌套循环。

for,while,do…while都可以进行嵌套循环,它们之间也可以相互嵌套,最常见的就是在for循环中嵌套for循环。

比如说每天时间的变化就使用到了嵌套循环:

7.break

在switch语句中:

作用是终止某个case并跳出,没有break,会出现case穿透。

在循环语句中:

作用是跳出循环语句,并继续执行循环结构后面的代码。

在嵌套循环中:

作用是只能跳出当前的循环语句,不能跳出外层循环语句。

如果想跳出外层循环,可以在外层循环的关键字前加上标记。

在闹钟定时,就可以使用到这个:

8.continue(继续)

continue的作用是指:结束本次循环,继续下一次循环。

比如:对[1,100]区间内的奇数求和,并打印出来

总结