当前位置: 首页 > news >正文

Java流程控制语句——条件控制语句详解(附有流程图)#Java条件控制语句有哪些?#if-else、switch

在 Java 编程中,条件控制语句用于控制程序的执行路径,决定根据某些条件来选择执行某段代码或跳过某段代码。它们是 Java 编程的重要组成部分,帮助开发者根据不同的输入、状态或数据流来编写更加灵活和动态的代码。在本文中,我们将详细讲解 Java 中的几种条件控制语句:if-elseelse-if switch,并通过示例帮助理解这些概念。

1. if-else语句

if-else 语句用于根据条件判断来选择不同的执行路径。当条件为真时,执行 if 代码块或者else if;当条件为假时,执行 else 代码块。

☑️if

格式:
if (关系表达式) {语句体;    
}
🔶执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体

③如果关系表达式的值为false就不执行语句体

④继续执行后面的语句内容

🏷️例子:
int age = 18;
if (age >= 18) {System.out.println("Adult");
}
if (age < 18) {System.out.println("Not an adult");
}
//输出结果为Adult
❗注意:
  • 如果我们要对一个布尔类型的变量进行判断,不要写==,直接把变量写在小括号中即可。

    boolean flag = true;
    if (flag) {System.out.println("判断为真");
    }
  • 如果大括号中的语句体只有一条,那么大括号可以省略不写。如果大括号省略了,那么if或者else只能控制距离他最近的那一条语句。但是建议还是加上大括号,代码可读性更强

    int a = 1;
    //如果大括号中的语句体只有一条,那么大括号可以省略不写
    if (a == 1) System.out.println("1");
    //但是还是建议加上大括号
    if (a == 1) {System.out.println("1");
    }

☑️if-else

格式:
if (关系表达式) {语句体1;   
} else {语句体2;   
}
🔶执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体1

③如果关系表达式的值为false就执行语句体2

④继续执行后面的语句内容

🏷️例子:
int age = 18;
if (age >= 18) {System.out.println("Adult");
} else {System.out.println("Not an adult");
}
//输出结果为Adult

☑️else if

格式:
if (关系表达式1) {语句体1;   
} else if (关系表达式2) {语句体2;   
} else if (关系表达式3) {语句体3;   
} 
…
else {语句体n+1;
}
🔶执行流程:

①首先计算关系表达式1的值

②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值

③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值

④…

⑤如果没有任何关系表达式为true,就执行语句体n+1。

🏷️例子:
int score = 75;
if (score >= 90) {System.out.println("A");
} else if (score >= 80) {System.out.println("B");
} else if (score >= 70) {System.out.println("C");
} else {System.out.println("F");
}
❗注意:

末尾的else如果不需要可以省略不写。

☑️使用场景

  • 当需要基于一个或多个逻辑条件来执行不同的代码路径时使用。

  • 通常用于处理简单的逻辑分支,如分数等级评定。

2. switch-case语句

🔶执行流程:

  • 首先计算出表达式的值

  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。

  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

☑️传统格式:

switch (表达式) {case 值1:// 如果表达式的值等于值1,执行这里的代码break;case 值2:// 如果表达式的值等于值2,执行这里的代码break;default:// 如果没有匹配的case,执行这里的代码
}
🔶流程图:
开始
↓
获取表达式值
↓
判断是否等于值1
| 是 -> 执行代码块1
| 否 -> 判断是否等于值2
|    是 -> 执行代码块2
|    否 -> ... -> 执行默认代码块
↓
结束
🏷️示例:
int day = 2;
switch (day) {case 1:System.out.println("Monday");break;case 2:System.out.println("Tuesday");break;default:System.out.println("Invalid day");
}

☑️新型格式(Java 14及以上版本):

var result = switch (表达式) {case 值1 -> "值1的处理结果";case 值2 -> "值2的处理结果";// 更多case...default -> "默认处理结果";
};
🔶流程图:
开始
↓
获取表达式值
↓
匹配case值
| 匹配成功 -> 执行对应代码块
| 匹配失败 -> 执行默认代码块
↓
结束
🏷️示例:
String dayOfWeek = "Wednesday";
var dayResult = switch (dayOfWeek) {case "Monday" -> "今天是周一";case "Tuesday" -> "今天是周二";case "Wednesday" -> "今天是周三";default -> "不是这三天中的一天";
};
System.out.println(dayResult);

☑️使用场景

  • 当需要根据变量的不同取值来选择不同的执行路径时使用。

  • 特别适用于处理byte、short、int、char、枚举、String类型或预定义的几个可能值。

  • 有限值需要任选其一的情况用switch可以让语句更简洁可读。

  • case后面的值只能是字面量不能是变量

🔶switchelse if使用场景的区别
  • 当我们需要对一个范围进行判断的时候,用else if
  • 当我们把有限个数据列举出来,选择其中一个执行的时候,用switch语句

简单记忆:记住switch语句使用场景,其他都考虑else if

❗注意:

default可以放在任意位置,也可以省略

但是都不建议:

  • default放在其他位置会导致代码混乱,可读性差;
  • 省略会导致没有匹配上结果就会结束

不写break会引发case穿透现象

switch (week){case 1:case 2:case 3:case 4:case 5:System.out.println("工作日");break;case 6:case 7:System.out.println("休息日");break;default:System.out.println("没有这个星期");break;
}

3. 表格总结

语句用法适用场景
if-else用于判断一个布尔表达式并根据条件执行代码块用于范围判断、逻辑复杂的多条件分支
else-if用于多层判断,从上到下依次检查条件是否成立需要处理多条件且逻辑稍微复杂的场景
switch基于一个表达式的值,执行匹配的 case 代码块用于处理有限个具体值的比较,如整型、字符型

4. 结论

在 Java 中,条件控制语句是编写动态程序的基础,能够帮助开发者根据输入或状态做出决策。if-elseelse-if 语句提供了灵活的多条件判断,而 switch 语句则在处理有限个具体值的情况下更加简洁。通过合理选择和使用这些条件控制语句,可以使代码更加高效、清晰,并且容易维护。

相关文章:

Java流程控制语句——条件控制语句详解(附有流程图)#Java条件控制语句有哪些?#if-else、switch

在 Java 编程中&#xff0c;条件控制语句用于控制程序的执行路径&#xff0c;决定根据某些条件来选择执行某段代码或跳过某段代码。它们是 Java 编程的重要组成部分&#xff0c;帮助开发者根据不同的输入、状态或数据流来编写更加灵活和动态的代码。在本文中&#xff0c;我们将…...

十一、SOA(SOA的具体设计模式)

我们现在深入学习SOA的具体设计模式。SOA架构中的设计模式主要是指导服务如何设计、实现、部署和管理&#xff0c;确保服务的松耦合、高可用性、扩展性和复用性。SOA常见的设计模式可以分为以下几类&#xff1a; 1. 服务层次设计模式 1.1. 基础服务&#xff08;Fundamental S…...

Mybatis原理

一. 为什么要使用Mybatis? 1.1 jdbc的使用步骤 首先&#xff0c;在pox.xml中引入MySQl驱动的依赖 第一步, Class.forName 注册驱动 第二步&#xff0c;获取一个Connection。 第三步&#xff0c;创建一个Statement对象。 第四步&#xff0c;execute()方法执行SQL。execute()方…...

黑马头条day3-2 自媒体文章管理

前边还有一个 素材列表查询 没什么难度 就略过了 查询所有频道和查询自媒体文章也是和素材列表查询类似 就是普通的查询 所以略过了 文章发布 这个其实挺复杂的 一共三张表 一个文章表 一个素材表 一个文章和素材的关联表 区分修改与新增就是看是否存在id 如果是保存草稿…...

JinDouYun性能测试工具使用方法

1.功能介绍 2. 安卓端支持安卓6及以上的版本&#xff0c;ios支持大部分版本 3. 可以测试游戏&#xff0c;视频&#xff0c;普通应用的性能数据&#xff0c;数据精准&#xff0c;低延迟&#xff0c;无侵入 4.工具下载链接 筋斗云 5.后续功能添加&#xff0c;高版本支持&…...

操作系统 | 学习笔记 | | 王道 | 5.3 磁盘和固态硬盘

5.3 磁盘和固态硬盘 5.3.1 磁盘 磁盘结构 磁盘&#xff1a;磁盘的表面由一些磁性物质组成&#xff0c;可以用这些磁性物质来记录二进制数据 磁道&#xff1a;磁盘的盘面被划分成一个个磁道。这样的一个“圈”就是一个磁道 扇区&#xff1a;一个磁道又被划分成一个个扇区&am…...

【Oauth2整合gateway网关实现微服务单点登录】

文章目录 一.什么是单点登录&#xff1f;二.Oauth2整合网关实现微服务单点登录三.时序图四.代码实现思路1.基于OAuth2独立一个认证中心服务出来2.网关微服务3产品微服务4.订单微服务5.开始测试单点登录 一.什么是单点登录&#xff1f; 单点登录&#xff08;Single Sign On&…...

WEB领域是不是黄了还是没黄

进入2024年后&#xff0c;WEB领域大批老表失业&#xff0c;一片哀嚎&#xff0c;个个饿的鬼叫狼嚎&#xff0c;为啥呢&#xff0c;下面是我个人的见解和看法。 中国程序员在应用层的集中 市场需求&#xff1a;中国的互联网行业在过去几年中经历了爆炸性增长&#xff0c;尤其是…...

Android系统:系统架构

文章目录 分层设计分块设计总结 分层设计 自上而下分为&#xff1a;应用层、应用架构层、系统运行层、硬件抽象层、Linux内核层 应用层 封装一系列系统App 应用架构层(Framework) 封装一系列运行App需要的Java框架 提供App开发需要的API 系统运行层(Libraries) 封装一系…...

NCNN 源码(1)-模型加载-数据预处理-模型推理

参考 ncnn 第一个版本的代码。 0 整体流程 demo&#xff1a;squeezenet ncnn 自带的一个经典 demo&#xff1a;squeezenet 的代码: // 网络加载 ncnn::Net squeezenet; squeezenet.load_param("squeezenet_v1.1.param"); squeezenet.load_model("squeezenet_…...

重修设计模式-结构型-享元模式

重修设计模式-结构型-享元模式 复用不可变对象&#xff0c;节省内存 享元模式&#xff08;Flyweight Pattern&#xff09;核心思想是通过共享对象方式&#xff0c;达到节省内存和提高性能的目的。享元对象需是不可变对象&#xff0c;因为它会被多处代码共享使用&#xff0c;要避…...

JavaScript 运算符

JavaScript 中的运算符可以根据其功能和用途分为几类。以下是主要的运算符类型及其用法&#xff1a; 1. 算术运算符 用于执行基本的数学运算。 : 加法 let sum 5 3; // 8- : 减法 let difference 5 - 3; // 2* : 乘法 let product 5 * 3; // 15/ : 除法 let quotient 5…...

3.js - 运动曲线

这个球&#xff0c;绕着这个红色的线圈转 代码 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControlslet scene,camera,renderer,controls nulllet moon,earth null// 根据&#xff0c;一系列的点&#xff0c;创建曲线 le…...

免费ppt模板哪里找?职场必备这些利器

一眨眼&#xff0c;9月份的尾声渐近&#xff0c;无论是学生还是职场人士&#xff0c;都开始准备着新一轮的演讲和报告。在这个忙碌的时期&#xff0c;一份精美的PPT模板能够大幅提升你的工作效率&#xff0c;让你的演示更加引人入胜。 不用担心高昂的版权费用&#xff0c;市场…...

wampserve 配置本地域名,出现错误

概述 今天更换了电脑&#xff0c;在本地安装和配置docker的时候&#xff0c;想用自定义域名访问NGINX容器&#xff0c;127.0.0.1和localhost都可以访问&#xff0c;但是自定义域名无法访问&#xff0c; 接着去捯饬已经使用的wampserver的集成环境&#xff0c;出现了同样的问题…...

MySQL慢查询优化指南

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 当遇到慢查询问题时&#xff0c;不仅影响服务效率&#xff0c;还可能成为系统瓶颈。作为一位软件工程师&#xff0c;掌握MySQL慢查询优化技巧至关重要。今天&#xff0c;我们就来一场“数据库加速之旅…...

怎么录制游戏视频?精选5款游戏录屏软件

对于热爱游戏的你来说&#xff0c;记录游戏中的精彩瞬间并分享给朋友或粉丝&#xff0c;无疑是一种享受。然而&#xff0c;在众多录屏软件中&#xff0c;如何选择最适合你的那一款&#xff1f;今天&#xff0c;我们就为大家精选了五款游戏录屏软件&#xff0c;需要的朋友快来选…...

论文阅读 - MDFEND: Multi-domain Fake News Detection

https://arxiv.org/pdf/2201.00987 目录 ABSTRACT INTRODUCTION 2 RELATED WORK 3 WEIBO21: A NEW DATASET FOR MFND 3.1 Data Collection 3.2 Domain Annotation 4 MDFEND: MULTI-DOMAIN FAKE NEWS DETECTION MODEL 4.1 Representation Extraction 4.2 Domain Gate 4.…...

LabVIEW软件出现Bug如何解决

在LabVIEW开发中&#xff0c;程序出现bug是不可避免的。无论是小型项目还是复杂系统&#xff0c;调试与修复bug都是开发过程中的重要环节。下文介绍如何有效解决LabVIEW软件中的bug&#xff0c;包括常见错误类型、调试工具、错误处理机制。 1. 常见Bug类型分析 在LabVIEW中&am…...

【数据结构-栈】力扣844. 比较含退格的字符串

给定 s 和 t 两个字符串&#xff0c;当它们分别被输入到空白的文本编辑器后&#xff0c;如果两者相等&#xff0c;返回 true 。# 代表退格字符。 注意&#xff1a;如果对空文本输入退格字符&#xff0c;文本继续为空。 示例 1&#xff1a; 输入&#xff1a;s “ab#c”, t “…...

DataFrame生成excel后为什么多了一行数字

问题描述 python查询数据生成excel文件&#xff0c;生成的excel多了第一行数字索引&#xff0c;1,2,3,4,5...... 代码&#xff1a; df pd.DataFrame(data)df.to_excel(filename, sheet_name用户信息表, indexFalse) 解决&#xff1a; 原理也很简单&#xff0c;就是设置个参…...

linux 内存屏障(barrier)分析

谈起内存屏障,大家感觉这个"玩意儿"很虚,不太实际,但是内核代码中又广泛地可以看到起身影。内存屏障,英文barrier,这个"玩意儿"它还不太好去定义它。barrier,中文翻译为栅栏&#xff0c;栅栏大家都见过,现实生活中就是防止他人或者动物非法闯入而用来进行隔…...

【人工智能】Transformers之Pipeline(十九):文生文(text2text-generation)

目录 一、引言 二、文生文&#xff08;text2text-generation&#xff09; 2.1 概述 2.2 Flan-T5: One Model for ALL Tasks 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 ​​​​​​​ 2.3.3 pipeline返回参数 ​​​​​​​​​​​…...

如何使用ssm实现基于VUE的儿童教育网站的设计与实现+vue

TOC ssm676基于VUE的儿童教育网站的设计与实现vue 第一章 课题背景及研究内容 1.1 课题背景 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全…...

MODBUS TCP 转 CANOpen

产品概述 SG-TCP-COE-210 网关可以实现将 CANOpen 接口设备连接到 MODBUS TCP 网络中。用户不需要了解具体的 CANOpen 和 Modbus TCP 协议即可实现将CANOpen 设备挂载到 MODBUS TCP 接口的 PLC 上&#xff0c;并和 CANOpen 设备进行数据交互。 产品特点 &#xf…...

vue2+elementUI实现handleSelectionChange批量删除-前后端

功能需求&#xff1a;实现选中一个或多个执行批量删除操作 在elementUI官网选择一个表格样式模板&#xff0c;Element - The worlds most popular Vue UI framework 这里采用的是 将代码复制到前端&#xff0c;这里是index.vue <template><el-button type"dang…...

LLMs之OCR:llm_aided_ocr(基于LLM辅助的OCR项目)的简介、安装和使用方法、案例应用之详细攻略

LLMs之OCR&#xff1a;llm_aided_ocr(基于LLM辅助的OCR项目)的简介、安装和使用方法、案例应用之详细攻略 目录 llm_aided_ocr的简介 1、特性 2、详细技术概览 PDF处理和OCR PDF到图像转换 OCR处理 文本处理流程 分块创建 错误校正与格式化 重复内容移除 标题和页码…...

低代码平台后端搭建-阶段完结

前言 最近又要开始为跳槽做准备了&#xff0c;发现还是写博客学的效率高点&#xff0c;在总结其他技术栈之前准备先把这个专题小完结一波。在这一篇中我又试着添加了一些实际项目中可能会用到的功能点&#xff0c;用来验证这个平台的扩展性&#xff0c;以及总结一些学过的知识。…...

暑假考研集训营游记

文章目录 摘要&#xff1a;1.对各大辅导机构考研封闭集训营的一些个人看法&#xff1a;2.对于考研原因一些感想&#xff1a;结语 摘要&#xff1a; Ashy在暑假的时候参加了所在辅导班的为期一个月的考研封闭集训营&#xff0c;有了一些全新的感悟&#xff0c;略作记录。 1.对…...

C#中的报文(Message)

在C#中&#xff0c;报文&#xff08;Message&#xff09;通常是指在网络通信中交换的数据单元。报文可以由多种不同的组成部分构成&#xff0c;具体取决于通信协议和应用场景。 以下是一些常见的报文组成部分&#xff1a; 头部&#xff08;Header&#xff09;&#xff1a;包含…...