首页 > 其他分享 >第三章 流程控制语句

第三章 流程控制语句

时间:2023-06-04 18:47:16浏览次数:36  
标签:语句 case 第三章 流程 break switch 执行 表达式

image

1. 顺序结构

顺序结构就是程序从上到下​ 运行的 ,表达式语句都是顺序执行的 。

并且上一行对某个变量的修改对下一行会产生影响

image

2. 分支语句

2.1 if-else 条件判断结构

基本语法 :

结构 1:单分支条件判断:if

格式:

if(条件表达式){
    语句块;
}

说明:​ 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)或 布尔变量。

执行流程:

  1. 首先判断条件表达式看其结果是 true 还是 false
  2. 如果是 true 就执行语句块
  3. 如果是 false 就不执行语句块

image

结构 2:双分支条件判断:if...else

格式:

if(条件表达式) {
    语句块1;
}else {
    语句块2;
}

执行流程:

  1. 首先判断条件表达式看其结果是 true 还是 false
  2. 如果是 true 就执行语句块 1
  3. 如果是 false 就执行语句块 2

image

结构 3:多分支条件判断:if...else if...else

格式:

if (条件表达式1) {
    语句块1;
} else if (条件表达式2) {
    语句块2;
}
...
}else if (条件表达式n) {
    语句块n;
} else {
    语句块n+1;
}

说明:​ 一旦条件表达式为 true,则进入执行相应的语句块。执行完对应的语句块之后,就跳出当前结构。

执行流程:

  1. 首先判断关系表达式 1 看其结果是 true 还是 false
  2. 如果是 true 就执行语句块 1,然后结束当前多分支
  3. 如果是 false 就继续判断关系表达式 2 看其结果是 true 还是 false
  4. 如果是 true 就执行语句块 2,然后结束当前多分支
  5. 如果是 false 就继续判断关系表达式…看其结果是 true 还是 false

n. 如果没有任何关系表达式为 true,就执行语句块 n+1,然后结束当前多分支

image

2.2 switch-case 选择结构

基本语法 :

语法格式:

switch(表达式){
    case 常量值1:
        语句块1;
        //break;
    case 常量值2:
        语句块2;
        //break;
    // ...
   [default:
        语句块n+1;
        break;
   ]
}

执行流程图:

image

执行过程:

第 1 步:根据 switch 中表达式的值,依次匹配各个 case。如果表达式的值等于某个 case 中的常量值,则执行对应 case 中的执行语句。

第 2 步:执行完此 case 的执行语句以后

** 情况 1:如果遇到 break,则执行 break 并跳出当前的 switch-case 结构**

​**情况2:如果没有遇到break,则会继续执行当前case之后的其它case中的执行语句。--->case穿透**

...

**直到遇到break关键字或执行完所有的case及default的执行语句,跳出当前的switch-case结构**

使用注意点:

  • switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);
  • case 子句中的值必须是常量,不能是变量名或不确定的表达式值或范围;
  • 同一个 switch 语句,所有 case 子句中的常量值互不相同;
  • break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;如果没有 break,程序会顺序执行到 switch 结尾;
  • default 子句是可选的。同时,位置也是灵活的。当没有匹配的 case 时,执行 default 语句。

case 的穿透性:

  • 在 switch 语句中,如果 case 的后面不写 break,将出现穿透现象,也就是一旦匹配成功,不会在判断下一个 case 的值,直接向后运行,直到遇到 break 或者整个 switch 语句结束,执行终止。

2.3 if-else 语句与 switch-case 语句比较

  • 结论:凡是使用 switch-case 的结构都可以转换为 if-else 结构。反之,不成立。

  • 开发经验:如果既可以使用 switch-case,又可以使用 if-else,建议使用 switch-case。因为效率稍高。

  • 细节对比:

    • if-else 语句优势

      • if 语句的条件是一个布尔类型值,if 条件表达式为 true 则进入分支,可以用于范围的判断,也可以用于等值的判断,使用范围更广​。
      • switch 语句的条件是一个常量值(byte,short,int,char,枚举,String),只能判断某个变量或表达式的结果是否等于某个常量值,使用场景较狭窄​。
    • switch 语句优势

      • 当条件是判断某个变量或表达式是否等于某个固定的常量值时,使用 if 和 switch 都可以,习惯上使用 switch 更多。因为效率稍高​。当条件是区间范围的判断时,只能使用 if 语句。
      • 使用 switch 可以利用穿透性​,同时执行多个分支,而 if...else 没有穿透性。

3. 循环语句

  • 理解:循环语句具有在某些条件​ 满足的情况下,反复执行​ 特定代码的功能。

  • 循环结构分类:

    • for 循环
    • while 循环
    • do-while 循环
  • 循环结构四要素​:

    • 初始化部分
    • 循环条件部分
    • 循环体部分
    • 迭代部分

4. 关键字 break 和 continue

            适用范围            在循环结构中使用的作用                     相同点

break       switch-case
            循环结构            一旦执行,就结束(或跳出)当前循环结构         此关键字的后面,不能声明语句

continue    循环结构            一旦执行,就结束(或跳出)当次循环结构         此关键字的后面,不能声明语句

此外,很多语言都有 goto 语句,goto 语句可以随意将控制转移到程序中的任意一条语句上,然后执行它,但使程序容易出错。Java 中的 break 和 continue 是不同于 goto 的。

5. Scanner : 键盘输入功能的实现

  • 如何从键盘获取不同类型(基本数据类型、String 类型)的变量:使用 Scanner 类。

  • 键盘输入代码的四个步骤:

    1. 导包:import java.util.Scanner;
    2. 创建 Scanner 类型的对象:Scanner scan = new Scanner(System.in);
    3. 调用 Scanner 类的相关方法(next() / nextXxx()​),来获取指定类型的变量
    4. 释放资源:scan.close();
  • 注意:需要根据相应的方法,来输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常 导致程序终止。

6. 如何获取一个随机数

如何产生一个指定范围的随机整数?

1、Math 类的 random()的调用,会返回一个[0,1)范围的一个 double 型值

2、Math.random() * 100 ---> [0,100)

**(int)(Math.random() * 100)---> [0,99]**

​ (int)(Math.random() * 100) + 5 ----> [5,104]

3、如何获取[a,b]​ 范围内的随机整数呢?(int)(Math.random() * (b - a + 1)) + a

4、举例

class MathRandomTest {
    public static void main(String[] args) {
        double value = Math.random();
        System.out.println(value);

        //[1,6]
        int number = (int)(Math.random() * 6) + 1; //
        System.out.println(number);
    }
}

标签:语句,case,第三章,流程,break,switch,执行,表达式
From: https://www.cnblogs.com/NorthPoet/p/17456059.html

相关文章

  • 面试官:我们简单聊一下SpringBoot的启动流程吧。
    SpringBoot启动原理每次看到这个问题总是不能理出一条线来回答流畅,这次理出一条八股文标准答案出来。复习的时候拿出来过一过思路。如果有不合适的地方希望各位大佬指教~[源码基于springboot2.4.3]框架启动类每个SpringBoot项目都有一个标注着@SpringBootApplication注解的main启动......
  • 从日志记一次Spring事务完整流程
    spring事务一次完整流程,创建》确认获取连接》完成》提交》释放链接DataSourceTransactionManager//Step1.进入业务方法前,依据事物切面创建事务对象2019-07-0622:34:24,819[main]DEBUGo.s.j.d.DataSourceTransactionManager-Creatingnewtransactionwithname[com......
  • Oracle分页查询语句
    Oracle分页查询语句(一)作者:yangtingkun     Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用。分页查询格式:SELECT*......
  • Map 接收 @RequestBody,Controller 层可以打印值,但是 mybatis 编译 SQL 语句显示 NULL
    mybatis#{}获取的key是否一致;前端发送请求类型是否与后端接口定义的请求类型一致;前端发送请求与接口请求的类型一致的情况下,检查post请求封装data时是否以get形式传递数据。我的问题是第三个,尤其是后端不报任何错误的情况下,第三种情况极有可能。我把axios.post......
  • 前置知识:方法递归的算法、执行流程详解
       ......
  • 【了不起的芯片 - 读书笔记】CPU 的制作流程 ( 晶圆制作 | 光刻机光刻流程 | 蚀刻过程
    文章目录一、晶圆制作二、光刻机光刻流程三、蚀刻过程四、涂层过程五、重复上述步骤若干次六、芯片封装一、晶圆制作晶圆制作是半导体芯片制造的关键过程,它涉及将硅晶片(或其他半导体材料)转化为可以用于集成电路制造的基础材料。下面是晶圆制作的主要步骤:单晶生长:通过化学气相沉......
  • 微信小程序发布上线全流程(注册/开发/上传审核)
    以下是微信小程序发布上线的详细流程:确认小程序信息:在微信公众平台注册并登录后,进入小程序管理后台,在“开发”->“开发设置”中填写小程序基本信息和配置,包括小程序名称、图标设计、类目选择等。此外,需要在小程序管理后台中配置小程序服务类目和资质认证。开发小程序代码和测试:使用......
  • [原创]通过代码及流程图说明Google在Android上的Push机制的实现
    [color=red][b]声明:如果您要转载,请事先征得本人的同意后方可并且请您附上原文链接.本人保留一切权利.多谢![/b][/color]Google从FroYo版本后引入了C2DM(CloudtoDeviceMessaging)框架:[url]http://code.google.com/android/c2dm/index.html[/url......
  • Activity的启动流程
    此篇完全照抄,后续会有增加资料面试必备:Android(9.0)Activity启动流程(一)面试必备:Android(9.0)Activity启动流程(二)startActivity启动过程分析Activity启动流程Activity的启动流程一文带你读懂Activity启动流程Launcher进程请求AMSAMS发送创建应用进程请求Zygote进程接受请求并孵化......
  • 2014.4.19.12.27_switch_8.28_java switch语句使用注意的四大细节_0.01
    javaswitch语句使用注意的四大细节很多朋友在使用javaswitch语句时,可能没有注意到一些细节,本文将详细介绍使用javaswitch语句四大要点,需要的朋友可以参考下。switch语句的格式如下:(它的功能是选出一段代码执行)switch(整数选择因子){case整数值1:语句;break;case整数值......