流程控制详解

news2024/12/26 10:46:57

1、Java流程控制

主要涉及三大流程控制:顺序、分支、循环

如下图:


1)流程2 存在对用户名和密码的校验,是否为空,存在分支控制
2)流程3 用户名和密码在数据库是否存在,存在分支控制
3)流程4/5 顺序控制
备注:token 返回给app,下一次用户打开app,app段只需要把本地的token传给后端,后端校验token是否失效等,如果未失效,就代表登录成功了

2、顺序控制

2.1、基本介绍

程序从上到下逐级运行,中间没有任何判断和跳转

3、分支控制 if-else

让程序有选择的执行,分支控制有4种:
1)单分支控制
2)双分支控制
3)多分支控制
4)switch分支结构

3.1、单分支

基本语法
if (条件表达式) {
  执行代码块;(可以多条语句)
}
tip:当条件表达式为true时,就会执行{}里的代码。如果为false就不执行,此外如果if后面只有一条语句,则可以不写{}

3.2、双分支

基本语法
if (条件表达式) {
  执行代码块1;(可以多条语句)
} else {
  执行代码块2;
}
说明:当条件表达式成立时,执行if里面的代码块,否则执行else里面的代码块。同样的,如果执行的代码块只有一条语句,则{}可以省略。否则不能省略。

3.3、多分支

基本语法
if(条件表达式1){
  执行代码块1;
} else if {
  执行代码块2;
}

else {
  执行代码块n;
}

Tips:
①多分支,可以没有else,如果所有表达式条件都不成立,则一个入口也没有
②如果有else,如果所有条件表达式都不成立,则默认执行else里的代码块。

3.4、嵌套分支

基本介绍
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支结构称为内层分支,外面的分支结构成为外层分支。 规范:不要嵌套超过3层(原因:可读性差)

基本语法
if(){
  if(){
     //if-else
  }else{
     //if-else
  }
}

4、switch分支结构
基本语法
switch(表达式){
  case 常量1:
     代码块1;
     break;

   case 常量n:
    代码块n;
    break;
   default:
    default代码块;
    break;
Tips:
①switch关键字,表示switch分支
②表达式对应一个值
③case 常量1:当表达式的值等于常量1,就执行代码块1
④break:表示退出switch
⑤如果和case常量1匹配,就执行代码块1,如果没有匹配成功,就继续匹配case常量2,以此类推。
⑥如果一个都没有匹配成功,就执行default

细节
1)表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的。
2)switch(表达式)中表达式的返回值必须是:(byte,short, int,char,enum,String)类型。代码如下:3)case子句中的值必须是常量,而不能是变量。
4)default子句是可选的,当没有匹配的case时,执行default
5)break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写 break,程序会       顺序执行到switch结尾。
6)  switch和if

如果判断的具体数值不多,而且符号byte,short,int,char,enum,String这6种类型。建议使用switch语句。
其他情况,对区间的判断,和对结果为boolean类型判断,使用if,if的适用范围更广

5、循环控制
基本介绍
循环控制,就是要让你的代码可以循环的执行。

5.1、for循环控制
基本语法
for(循环变量初始化;循环条件;循环变量迭代){
   循环操作(语句);
}
Tips:
①for关键字,表示循环控制
②for有四个要素:循环变量初始化,循环条件,循环操作,循环变量迭代
③循环操作如果只有一条语句,那么{}可以省略
Tips:循环条件也可以省略,省略之后变成无限循环。代码如下:

for (;;){
    System.out.println("hh6879");
}
②循环条件是返回一个布尔值的表达式
③循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开, 循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。代码如下:

int num1 = 4;
for (int i1 =0,j = 0; i1 < num1; i1++, j+=2){
    System.out.println("i1 ="+i1+" j= "+j);
}

5.1、while循环控制
基本语法
循环变量初始化
while(循环条件){
  循环体(语句);
  循环变量迭代;
}
Tips:
①while与for一样,也有循环四要素。
②但是while与for四要素的位置不一样
③while与for一样写死循环,省略循环变量迭代就可以了。

while细节
①while和for一样,循环条件都是返回一个布尔值的表达式
②while循环是先判断再执行语句(与do…whlie相反)

5.2、do…while循环控制
基本语法
循环变量初始化
do{
  循环体(语句);
  循环变量迭代;
}while(循环条件);
Tips:
①do while都是关键字
②与前面的一样,do…whlie也有循环四要素,只是位置不一样。
③先执行再判断,也就是说do里的语句至少执行一遍。(与while不一样)
④最后有一个分号;

细节
①与前面一样,循环条件是返回一个布尔值的表达式。
②do…while循环是先执行,在判断,因此至少执行一次。

5.3、嵌套循环控制
基本介绍
①当一个循环放在另一个循环内,就形成了嵌套循环。其中for,while,do…while均可以作为外层循环和内层循环。 同分支嵌套一样,建议一般使用两层,不要超过三层,否则代码可读性很差。
②实质上,嵌套循环就是内层循环被当作了外层循环的循环体。只有内层循环的循环条件为false的时候,才会跳出内层循环,才可以结束本次外层循环,开始下一次循环。
③设外层循环次数为m,内层循环次数为n,则内层实际上需要执行m*n次。代码示例如下:

for(int i = 1; i <= 4; i++){ // 外层循环:4次
    for (int j =1;j<=3; j++){ // 内层循环:3次
        System.out.println("hh6879"); // 一共 3*4 = 12 次
    }
}

6、跳转控制语句
6.1、break
为什么需要跳转控制?因为当我们需要循环解决问题,但是循环的次数不确定时,需要当满足某些条件时,终止循环。这时候就需要流程控制语句了。

基本介绍
break语句用于终止某个语句块的执行,一般使用在switch或者循环中。
基本语法
{  …
  break;
  …
}

细节
①break语句出现在多层嵌套语句时,可以通过标签指明要终止那一层的语句块。
②标签的使用
label1 :{ …
label2 :  {…
label3 :    {…
        break label2;
        }
      }
    }
TIps:
①break可以指定退出哪层
②label是标签,由程序员指定。只要是符合规则的命名都可以
③break 指定到那个标签就退到那里
④在实际使用中,尽量不要使用标签。
⑤如果没有指定标签,break默认退出最近的循环体

6.2、continue
基本介绍
①与break不同,continue用于结束本次循环,继续执行下一次循环,而不是直接跳出循环体。
②continue也和break一样,可以通过标签来指定要跳过的是那一层的循环,规则通前面一样。这里不写了。
基本语法
{  …
  continue;
  …
}
细节
①continue的标签与break标签的用法一样,不过要记得continue是本次,break是本层。

6.3、return
基本介绍
return表示跳出所在的方法,在讲方法时细说。这里简单提一下。要注意return写在main方法中执行到的时候会退出程序。
 
————————————————
版权声明:本文为CSDN博主「吹老师个人app编程教学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chuige2013/article/details/134679206

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1375677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ant design vue Tree组件叶子节点横向排列

antdesignvue的树形组件要实现组件叶子节点横向排列有点坑&#xff0c;没有 配置属性&#xff0c;需要自己想办法。 要实现的效果 看tree组件的dom结构&#xff0c;父元素flex竖向布局&#xff0c;子项不论节点层级都在同一层&#xff01;&#xff01;&#xff01; 难点在于想…

中级Python面试问题

文章目录 专栏导读1、xrange 和 range 函数有什么区别&#xff1f;2、什么是字典理解&#xff1f;举个例子3、元组理解吗&#xff1f;如果是&#xff0c;怎么做&#xff0c;如果不是&#xff0c;为什么&#xff1f;4、 列表和元组的区别&#xff1f;5、浅拷贝和深拷贝有什么区别…

SV-298XT IP网络广播板 SV-298XT-共公广播音频模块IP网络广播板

SV-298XT IP网络广播板 SV-298XT-共公广播音频模块IP网络广播板 SV-298XT网络广播模块是一款全数字网络型广播模组&#xff0c;核心部分采用了成熟的私有协议解决方案&#xff0c;性能稳定可靠。支持TCP、UDP、组播协议能针对当前服务器中不同的广播任务设置不同的广播传输方式…

DLT:dlt-daemon示例解析2

DLT&#xff1a;dlt-daemon示例解析 回顾一下上期第一个示例打印DLT日志的流程。 这次来分析第二个示例。 目录dlt-daemon/examples/example2/下有以下文件 CMakeLists.txt dlt_id.h example2.c example2.xml 其中example2.xml编译用不到&#xff0c;里面描述了一些程序的…

Elasticsearch聚合优化 | 聚合速度提升5倍!

1、聚合为什么慢&#xff1f; 大多数时候对单个字段的聚合查询还是非常快的&#xff0c; 但是当需要同时聚合多个字段时&#xff0c;就可能会产生大量的分组&#xff0c;最终结果就是占用 Elasticsearch大量内存&#xff0c;从而导致 OOM 的情况发生。 实践应用发现&#xff0…

git入门之本地操作

1、启动git命令输入 在想要建立仓库&#xff0c;建议的方式是在文件夹中右键单击&#xff0c;选择git bash here 2、初始化仓库命令&#xff1a;git init 3、查看仓库状态&#xff1a;git status 4、更新仓库特定文件&#xff1a;git add xxx 5、更新仓库所有文件&#xff1…

【机器学习】聚类算法(二)

五、基于密度的算法 5.1 DBSCAN 算法 import sys # 导入 sys 模块&#xff0c;用于访问系统相关的参数和功能 import os # 导入 os 模块&#xff0c;用于处理文件和目录 import math # 导入 math 模块&#xff0c;用于进行数学运算 import random # 导入 random 模块&#xff0…

JVM基础(5)——JVM垃圾回收算法

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

【机器学习】模型调参工具:Hyperopt 使用指南

机器学习| 模型调参工具&#xff1a;Hyperopt 使用指南 前言1. Hyperopt是什么&#xff1f;2. Hyperopt的优缺点3. 如何使用 Hyperopt 进行调参3.1 安装 Hyperopt3.2 构建超参数空间3.3 定义目标函数3.4 运行 Hyperopt 优化3.5 获取最优超参数 4. XGB调参代码示例参考资料 前言…

Java Http各个请求类型详细介绍

1. 前言 在Spring Boot框架中&#xff0c;HTTP请求类型是构建Web应用程序的重要组成部分。常见的请求类型包括GET、POST、PUT和DELETE&#xff0c;每种类型都有其特定的用途和特点。本文将详细比较这四种请求类型&#xff0c;帮助您在开发过程中做出明智的选择。 2. GET请求…

12.扩展字典(ExtensionDictionary)

愿你出走半生,归来仍是少年! 环境:.NET FrameWork4.5、ObjectArx 2016 64bit、Entity Framework 6. 在10.扩展数据(XData)中我们讲到每个DbObject有一个XData对象可以存储数据,除此之外每个DbObject对象还有一个ExtensionDictionary(扩展字典)可以进行数据存储。…

vue3+ts+vite中封装axios,使用方法从0到1

一、安装axios npm install axios types/axios --save二、配置代理vite.config.ts&#xff0c;如果没有需要新建该文件 module.exports {server: {proxy: {/api: {target: http://localhost:5000, // 设置代理目标changeOrigin: true, // 是否改变请求源地址rewrite: (path)…

【开源】基于JAVA+Vue+SpringBoot的大病保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统配置维护2.2 系统参保管理2.3 大病保险管理2.4 大病登记管理2.5 保险审核管理 三、系统详细设计3.1 系统整体配置功能设计3.2 大病人员模块设计3.3 大病保险模块设计3.4 大病登记模块设计3.5 保险审核模块设计 四、…

写点东西《Docker入门(上)》

写点东西《Docker入门&#xff08;上&#xff09;》 环境变量 Docker 镜像 Docker CMD 与 ENTRYPOINT 有什么区别 Docker 中的网络&#xff1a; Docker 存储&#xff1a; Docker 是一个工具&#xff0c;允许开发人员将他们的应用程序及其所有依赖项打包到一个容器中。然后&…

SQL--case语句

case语句&#xff0c;按从上到下的书写顺序计算每个WHEN子句的布尔表达式。返回第一个取值为TRUE的布尔表达式所对应的结果表达式的值。如果没有取值为TRUE的布尔表达式&#xff0c;则当指定了ELSE子句时,返回ELSE子句中指定的结果&#xff1b;如果没有指定ELSE子句&#xff0c…

【Docker】快速入门之Docker的安装及使用

一、引言 1、什么是Docker Docker是一个开源的应用容器引擎&#xff0c;它让开发者可以将他们的应用及其依赖打包到一个可移植的镜像中&#xff0c;然后发布到任何流行的Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之…

1688采购工厂货源对接API

1688现有API列表 item_get 获得1688商品详情item_search 按关键字搜索商品item_search_img 按图搜索1688商品&#xff08;拍立淘&#xff09;item_search_suggest 获得搜索词推荐item_fee 获得商品快递费用seller_info 获得店铺详情item_search_shop 获得店铺的所有商品item_p…

解决python画图无法显示中文的问题

python画图遇到的问题&#xff1a; 中文不显示&#xff1a; 解决方法&#xff1a;把字体设置为支持中文的字体&#xff0c;比如黑体 黑体下载链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1BD7zQEBUfcIs6mC2CPYy6A?pwdv120 提取码&#xff1a;v120 pyhon…

SpringBoot默认配置文件

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot默认配置文件 📚个人知识库: Leo知识库,欢迎大家访问 1.前言☕…

Git 基础指令

Git 基础指令 本章涵盖了我们在使用 Git 完成各种操作时将会用到的各种基本命令。 在学习完本章之后&#xff0c;我们应该能够配置并初始化一个仓库&#xff08;repository&#xff09;、开始或停止跟踪&#xff08;track&#xff09;文件、暂存&#xff08;stage&#xff09;…