JavaSE中的if语句、switch语句:如何控制程序流程?

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

Java作为一门广泛应用的开发语言,其支持的条件语句丰富多样。其中最基本的就是if语句和switch语句,这两种语句都可以用于根据不同的条件执行不同的代码块。在日常开发中,对于一些需要基于条件来进行判断和控制的业务逻辑,if和switch语句都是必不可少的工具。

摘要

本文主要围绕JavaSE中的条件语句:if语句、switch语句进行介绍和解析。在介绍的同时,我们还会结合实际的应用场景,解析if和switch语句的优缺点,以及在类中定义if和switch语句的方法和标准等。

正文

简介

if语句

if语句是一种基于条件判断的控制语句,用于根据不同的条件执行不同的代码块。if语句通常的语法形式如下:

if (condition) {// 如果条件成立,执行此代码块
} else {// 如果条件不成立,执行此代码块
}

其中,condition是需要进行判断的条件表达式,如果表达式的值为true,则执行if后面的代码块,否则执行else后面的代码块。

switch语句

switch语句也是一种基于条件判断的控制语句,用于根据不同的表达式值执行不同的代码块。switch语句通常的语法形式如下:

switch (expression) {case value1:// 如果expression的值等于value1,执行此代码块break;case value2:// 如果expression的值等于value2,执行此代码块break;default:// 如果expression的值不等于任何一个case中的值,执行此代码块break;
}

其中,expression是需要进行判断的表达式,case后面的value是需要匹配的值。如果expression的值等于某一个case后面的value,则执行对应的代码块,并且程序会跳出switch语句。如果expression的值不等于任何一个case中的值,则执行default后面的代码块。

源代码解析

if语句

我们来看一个简单的if语句的例子,代码如下:

int num = 10;
if (num > 0) {System.out.println("num是正数。");
} else {System.out.println("num是负数或0。");
}

在这个例子中,我们定义了一个int类型的变量num,并且使用if语句对num进行了判断。如果num的值大于0,执行if后面的代码块,输出"num是正数。“;否则执行else后面的代码块,输出"num是负数或0。”。

  根据如上代码测试结果如下:

在这里插入图片描述

  根据如上代码分析可得:

  这是一段Java语言代码,它的作用是判断变量num的值是否为正数,如果是则输出"num是正数。“,否则输出"num是负数或0。”。在这段代码中,使用了if-else语句来进行条件判断,当num大于0时,执行if语句块中的代码,即输出"num是正数。“;否则执行else语句块中的代码,即输出"num是负数或0。”。

switch语句

我们再来看一个简单的switch语句的例子,代码如下:

int num = 2;
switch (num) {case 1:System.out.println("星期一。");break;case 2:System.out.println("星期二。");break;case 3:System.out.println("星期三。");break;case 4:System.out.println("星期四。");break;case 5:System.out.println("星期五。");break;case 6:System.out.println("星期六。");break;case 7:System.out.println("星期日。");break;default:System.out.println("参数错误。");break;
}

在这个例子中,我们定义了一个int类型的变量num,并且使用switch语句对num进行了判断。根据num的值的不同,分别执行不同的代码块并输出相应的结果。

  根据如上代码测试结果如下:

在这里插入图片描述

  根据如上代码分析可得:

  这段代码是一个 Switch 语句,用于在给定整数变量 num 的情况下,输出对应的星期几。在这个例子中,num 的值为 2,所以输出 “星期二。” 。如果 num 不在 1-7 的范围内,就会执行 default 中的代码块,输出 “参数错误。”。

应用场景案例

if语句

if语句常用于对某个变量或表达式的值进行判断,根据不同的情况执行不同的代码块。下面是一个应用if语句进行身份认证的例子:

package com.example.javase.se.controlProgram;import java.util.Scanner;/*** @Author ms* @Date 2023-11-12 22:08*/
public class IfTest {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入用户名:");String username = scanner.next();System.out.println("请输入密码:");String password = scanner.next();if ("admin".equals(username) && "123456".equals(password)) {System.out.println("身份认证成功。");} else {System.out.println("身份认证失败,请重新输入。");}}
}

在这个例子中,我们使用Scanner类从控制台获取用户输入的用户名和密码,然后使用if语句对用户名和密码进行判断。如果用户名为"admin"并且密码为"123456",则输出"身份认证成功。“,否则输出"身份认证失败,请重新输入。”。
  根据如上代码测试结果如下:

在这里插入图片描述

  根据如上代码分析可得:

  这段代码是一个简单的用户身份认证程序,通过控制台输入用户名和密码进行身份认证。如果输入的用户名是"admin"且密码是"123456",则认证成功,输出"身份认证成功";否则认证失败,输出"身份认证失败,请重新输入"。注意,在比较字符串时应该使用equals()方法。

switch语句

switch语句常用于对某个变量或表达式的值进行判断,根据不同的情况执行不同的代码块。下面是一个应用switch语句进行计算器运算的例子:

package com.example.javase.se.controlProgram;import java.util.Scanner;/*** @Author ms* @Date 2023-11-12 22:08*/
public class SwichTest {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入第一个数字:");double num1 = scanner.nextDouble();System.out.println("请输入第二个数字:");double num2 = scanner.nextDouble();System.out.println("请输入运算符:");char operator = scanner.next().charAt(0);double result = 0.0;switch (operator) {case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':result = num1 / num2;break;default:System.out.println("无效的运算符。");break;}System.out.println("计算结果为:" + result);}
}

在这个例子中,我们使用Scanner类从控制台获取用户输入的两个数字和运算符,然后使用switch语句对运算符进行判断。根据运算符的不同,我们执行不同的计算,并输出计算结果。
  根据如上代码测试结果如下:

在这里插入图片描述

  根据如上代码分析可得:

  这是一个Java的计算器程序,读取用户输入的两个数字和运算符,然后进行相应的运算并输出结果。程序采用了switch语句来判断不同的运算符,并利用对应的运算符计算结果。用户可以在控制台输入数字和运算符,程序会自动计算并输出结果。

优缺点分析

if语句

优点
  1. 语法简单,易于理解和使用。
  2. 可以根据不同的条件执行不同的代码块,灵活性高。
  3. 可以嵌套使用,实现较为复杂的控制逻辑。
缺点
  1. 如果条件比较多,if语句嵌套层数较深,代码可读性会降低。
  2. 如果条件表达式判断不当,可能会造成逻辑缺陷或者程序出错。

switch语句

优点
  1. 可以根据不同的表达式值执行不同的代码块,可读性高。
  2. 语法简单,易于理解和使用。
  3. 效率高,因为编译器可以使用查找表优化switch语句的执行。
缺点
  1. 可以执行的操作有限,只适合于一些具有固定值的表达式的判断。
  2. 每个case需要加上break语句,否则会导致程序执行错误。

类代码方法介绍

定义if语句

在类中定义if语句的方法非常简单,只需要根据语法要求编写if语句即可。下面是一个类中定义if语句的例子:

public class Demo {public static void main(String[] args) {int num = 10;if (num > 0) {System.out.println("num是正数。");} else {System.out.println("num是负数或0。");}}
}

  根据如上代码测试结果如下:

在这里插入图片描述

  根据如上代码分析可得:

  这段代码定义了一个名为Demo的类,并在main方法中定义了一个整型变量num并赋值为10。接着使用if结构进行判断,如果num大于0,就通过System.out.println()方法输出"num是正数。“;否则输出"num是负数或0。”。最终结果将是"num是正数。"。

定义switch语句

在类中定义switch语句也非常简单,只需要根据语法要求编写switch语句即可。下面是一个类中定义switch语句的例子:

public class Demo {public static void main(String[] args) {int num = 6;switch (num) {case 1:System.out.println("星期一。");break;case 2:System.out.println("星期二。");break;case 3:System.out.println("星期三。");break;case 4:System.out.println("星期四。");break;case 5:System.out.println("星期五。");break;case 6:System.out.println("星期六。");break;case 7:System.out.println("星期日。");break;default:System.out.println("参数错误。");break;}}
}

在这个例子中,我们同样定义了一个Demo类,并且在main函数中定义了一个switch语句来根据不同的数值输出对应的结果。与if语句不同的是,switch语句需要使用case关键字来定义不同的条件分支,并且每个case分支需要以break结束。同时,可以使用default分支处理所有未被前面任何一个case分支匹配的值。

  根据如上代码测试结果如下:

在这里插入图片描述

  根据如上代码分析可得:

  该代码为一个Java程序,包含一个名为Demo的类,其中有一个main方法。在main方法中,定义了一个整型变量num并赋值为6。然后使用了switch语句,根据num的值来判断输出哪一个星期几。如果num的值为1,则输出“星期一。”,如果num的值为2,则输出“星期二。”,以此类推。如果num的值不在1到7之间,则输出“参数错误。”。在每个case分支中使用了break语句来跳出switch语句。最终运行该程序,输出“星期六。”。

标准和最佳实践

在使用if和switch语句时,需注意以下标准和最佳实践:

  1. 尽可能避免使用过多的if语句嵌套,可以使用多个else if语句来代替。
  2. 在使用switch语句时,确保每个case分支都有对应的break语句。
  3. 使用if语句时,将常量写在等式左边可以避免出现空指针异常。
  4. 在对字符串进行比较时,使用equals方法而不是"=="运算符。
  5. 在处理复杂的控制逻辑时,可以考虑使用状态模式或策略模式等设计模式,避免使用过多的if和switch语句。

小结

  1. if语句用于根据不同的条件执行不同的代码块,switch语句用于根据不同的表达式值执行不同的代码块。
  2. if语句有灵活性强的优点,但是当条件比较多时,if语句的嵌套层数较深,代码可读性会降低。switch语句具有可读性高的优点,但是每个case需要加上break语句,否则会导致程序执行错误。
  3. 在使用if和switch语句时,需要注意一些标准和最佳实践,如避免使用过多的if语句嵌套、确保每个case分支都有对应的break语句、使用equals方法而不是"=="运算符等。
  4. 在处理复杂的控制逻辑时,可以考虑使用状态模式或策略模式等设计模式,避免使用过多的if和switch语句。

总结

在JavaSE中,if语句和switch语句都是非常实用的条件语句。if语句通常用于根据不同的条件执行不同的代码块,而switch语句通常用于根据不同的表达式值执行不同的代码块。在实际应用中,if和switch语句都有其优缺点,需要根据具体情况选择合适的语句。同时,在使用if和switch语句时,需要注意一些标准和最佳实践,以保证代码的可读性、可维护性和安全性。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

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

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

相关文章

MySQL与PostgreSQL关键对比一(整体篇)

目录 1 快速参考表:MySQL 与 PostgreSQL 功能表 2 快速参考表:MySQL 与 PostgreSQL 功能表 MySQL 和 PostgreSQL 提供许多相同的特性和功能 - 但是这两个关系数据库管理系统 (RDBMS) 之间存在不容忽视的关键差异。 如果您不熟悉这些差异,这…

RabbitMQ(五)集群配置、Management UI

文章目录 一、安装RabbitMQ1、前置要求2、安装docker版复制第一个节点的.erlang.cookie进入各节点命令行配置集群检查集群状态 3、三台组合集群安装版rabbitmq节点rabbitmq-node2节点rabbitmq-node3节点 二、负载均衡:Management UI1、说明2、安装HAProxy3、修改配置…

Windows安装运行elasticsearch服务

官方下载地址:Download Elasticsearch | Elastic 我在linux上执行的下载命令:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.3-linux-x86_64.tar.gz Elasticsearch(简称ES)是一款基于Apache Lu…

hutool工具实践-缓存

简介 依赖引入 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-cache</artifactId><version>5.8.17</version></dependency> hutool工具既可以像上一章hutool工具实践-验证码-CSDN博客所说直接全部引入&#x…

短剧小程序剧场短剧APP定制开发付费短剧之为什么自建?

在当今数字时代&#xff0c;拥有一个属于自己的小剧场短剧影视小程序不仅是追求创作梦想的新途径&#xff0c;也是与观众建立紧密联系的有效方式。这种新兴的平台为创作者提供了前所未有的自由和机会&#xff0c;使他们能够直接与广大观众交流和分享作品。 1、源码分享的重要性…

搭贝请假审批应用

在现代企业管理中&#xff0c;高效的请假审批系统至关重要。搭贝的请假审批应用通过简化员工的请假流程、提升管理层的工作效率&#xff0c;确保企业运作的连贯性和透明度。本文将介绍搭贝请假审批应用的主要功能模块&#xff1a;请假分析看板、请假申请审批流、请假类型维护和…

依赖注入方式和自动加载原理

依赖注入 Spring提供了依赖注入的功能&#xff0c;方便我们管理和使用各种Bean&#xff0c;常见的方式有&#xff1a; 字段注入&#xff08;Autowired 或 Resource&#xff09;构造函数注入set方法注入 在以往代码中&#xff0c;我们经常利用Spring提供的Autowired注解来实现…

elk:使用filebeat采集日志发送到kafka

# 安装 filebeat 下载 cd /chz/install/filebeat wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.13.4-linux-x86_64.tar.gz解压 tar zxvf filebeat-8.13.4-linux-x86_64.tar.gz修改配置文件 cd /chz/install/filebeat/filebeat-8.13.4-linux-x86…

在Linux上的Java项目导出PDF乱码问题

在Linux上的Java项目导出PDF乱码问题 场景&#xff1a;一个Java项目导出PDF&#xff0c;在我本地导出是没有问题&#xff0c;但是部署上Linux上后&#xff0c;导出就出现了乱码了。 处理方案 我这里使用的处理方案是在Linux服务器上安装一些PDF需要使用的字体 1.把字体上传到…

Apache POI(使用Java读写Excel表格数据)

1.Apache POI简介 Apache POI是一个开源的Java库&#xff0c;用于操作Microsoft Office格式的文件。它支持各种Office文档的读写功能&#xff0c;包括Word文档、Excel电子表格、PowerPoint演示文稿、Outlook电子邮件等。Apache POI提供了一组API&#xff0c;使得Java开发者能够…

course-nlp——8-translation-transformer

本文参考自https://github.com/fastai/course-nlp。 注意力机制和 Transformer Nvidia AI 研究员 Chip Huyen 写了一篇很棒的文章《Top 8 trends from ICLR 2019》&#xff0c;其中的趋势之一是 RNN 正在失去研究人员的青睐。 这是有原因的&#xff0c;RNN 可能很麻烦&#…

【Qt】Qt QTreeWidget隐藏列名称(横向表头)

1. 效果 未隐藏 隐藏 2. 方法 方法1 ui->treeWidget->header()->hide();方法2 ui->treeWidget->header()->setVisible(false);

Go语言升级1.22.0版本VSCode启动调试报 Version of Go is too old for this version of Delve

因为项目中调用了其它同事的服务&#xff0c;该服务同事的Go环境是1.22.0&#xff0c;我本地go环境是Go1.20.6&#xff0c;不得已也升级了go的版本到1.22.0&#xff0c;其实升级很简单&#xff0c;只需要去go官网下载windows环境的zip包&#xff0c;把原来配置的环境变量GOROOT…

计算机科学(学习笔记三)

内容来源&#xff1a;计算机科学 指令和程序 指令&#xff1a;指示计算机要做什么的代码&#xff0c;多条指令共同组成程序。 计算机指令长度 由于早期计算机每个字只有8位&#xff0c;指令只占4位&#xff0c;意味着只能有16个指令&#xff0c;这远远不够。 现代计算机有两…

[个人总结]-java常用方法

1.获取项目根路径 user.dir是一个系统属性&#xff0c;表示用户当前的工作目录&#xff0c;大多数情况下&#xff0c;用户的当前工作目录就是java项目的根目录&#xff08;src文件的同级路径&#xff09; System.getProperty("user.dir") 结果&#xff1a;D:\code…

C++实现,简单的命令行交互框架

目录 背景 背景 在实际开发中&#xff0c;经常需要有对端测试程序&#xff0c;配合自己的程序&#xff0c;验证功能、逻辑等。面对繁杂、多变的需求&#xff0c;如果对端程序设计得不够灵活&#xff0c;则无法提升工作效率&#xff0c;如果能够与对端程序交互&#xff0c;通过…

Spring Cloud 微服务集成Sentinel实现服务熔断降级

文章目录 一、前言二、技术思路及方案2.1 实现思路2.2 实现方案2.2.1 nacos动态数据源实现类关系图 三、功能实现3.1 快速集成方案3.1.1 引入依赖3.1.2 服务端熔断降级3.1.3 feign调用降级 四、扩展4.1 SPI机制4.2 自定义Slot实现4.3 基于 Sentinel 实现 Feign 全局异常兜底4.3…

Html5如何播放hls格式的视频

目录 一、什么情况下需要播放 二、hls的原理 1、 切片 2、编码 3、分发 4、M3U8文件 5、客户端请求 6、动态码率调整 7、缓存 8、实时性 三、方法一&#xff1a;使用hls.js播放 四、方法二&#xff1a;使用video.js播放 一、什么情况下需要播放 当前端需要嵌入设备视…

[数组] 子数组最大平均数

给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且 长度为 k 的连续子数组&#xff0c;并输出该最大平均数。 任何误差小于 10-5 的答案都将被视为正确答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,12,-5,-6,50,3], k 4 输出&#xff…

操作系统教材第6版——个人笔记5

3.2 单连续分区存储管理 3.2.1 单连续分区存储管理 单连续分区存储管理 每个进程占用一个物理上完全连续的存储空间(区域) 单用户连续分区存储管理固定分区存储管理可变分区存储管理 单用户连续分区存储管理 主存区域划分为系统区与用户区设置一个栅栏寄存器界分两个区域…