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

news2024/12/23 9:20:57

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区: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.coloradmin.cn/o/1796601.html

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

相关文章

安防监控平台智能边缘分析一体机视频监控系统室内消防通道占用检测算法

随着城市化进程的加速,高层建筑如雨后春笋般涌现。这些建筑的消防安全问题日益凸显,尤其是消防通道的占用问题。为了解决这一问题,智能边缘分析一体机被引入到室内消防通道占用检测中,以提高检测效率和准确性。本文将探讨这一技术…

ctfshow-web入门-命令执行(web30-web36)

目录 1、web30 2、web31 3、web32 4、web33 5、web34 6、web35 7、web36 命令执行,需要严格的过滤 1、web30 代码差不多,就是过滤的东西变多了: preg_match("/flag|system|php/i", $c) 这里不让用 system ,我们…

RainBond 制作应用并上架【以ElasticSearch为例】

文章目录 安装 ElasticSearch 集群第 1 步:添加组件第 2 步:查看组件第 3 步:访问组件制作 ElasticSearch 组件准备工作ElasticSearch 集群原理尝试 Helm 安装 ES 集群RainBond 制作 ES 思路源代码Dockerfiledocker-entrypoint.shelasticsearch.yml制作组件第 1 步:添加组件…

JSONPath使用指南(掌握JSON数据提取)

大家好,在处理 JSON(JavaScript Object Notation)数据时,有时需要从复杂的结构中提取特定部分。JSONPath 就是一个非常有用的工具,它提供了一种简洁而强大的方式来定位和提取 JSON 数据中的元素。无论是在 Web 开发中处…

Sui主网升级至V1.26.2版本

Sui主网现已升级至V1.26.2版本,同时Sui协议升级至48版本。 其他升级要点如下所示: 协议 #17881 Sui原生随机性功能现在已在测试网启用。 索引器 #17649 JSON-RPC:现在JSON-RPC在查询时将返回正确的币种元数据和总供应量信息。 索引器…

病理级Polymer酶标二抗IHC试剂盒上线!

免疫组织化学 Immunohistochemistry,lHC 是利用抗体与抗原特异性识别原理,对组织样本中的抗原进行定位/定性分析的实验技术。组织切片保留了样品的解剖学结构特征,从而可以高分辨率地显现蛋白在细胞,甚至细胞器中的定位。基于以上特性&…

15. WinCC操作记录显示(模拟量修改与数字量变化)

方法一:记录方法与模拟量归档类似。该方法适合记录操作员修改模拟量或者少量的二进制变量。 在变量管理——过程值归档中新建组“操作记录”,然后将操作记录变量添加至该组下面,如果操作变量是二进制,那“归档于”列选择每个信号…

深入剖析Tomcat(九) Session的实现原理

提到Session,相信大家都不陌生,Http协议本身是无状态的,每次请求都是独立的,而当我们想要将多次请求建立某种关系的时候,就会用到CookieSession这个组合,也就是常说的“会话”概念,将多次请求当…

【git】subtree 简单教程

git subtree使用案例 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 🌝分享学习心得,欢迎指正&am…

ceph radosgw 原有zone placement信息丢失数据恢复

概述 近期遇到一个故障环境,因为某些原因,导致集群原有zone、zonegroup等信息丢失(osd,pool等状态均健康)。原有桶和数据无法访问,经过一些列fix后修复, 记录过程 恢复realm和pool相关信息 重…

Golang TCP网络编程

文章目录 网络编程介绍TCP网络编程服务器监听客户端连接服务器服务端获取连接向连接中写入数据从连接中读取数据关闭连接/监听器 简易的TCP回声服务器效果展示服务端处理逻辑客户端处理逻辑 网络编程介绍 网络编程介绍 网络编程是指通过计算机网络实现程序间通信的一种编程技术…

SLC Flash SD芯片:高性能存储的优选

SLC Flash SD芯片是一种采用单阶存储单元(SingleLevel Cell,SLC)技术的Secure Digital(SD)存储卡。SLC技术以其快速的传输速度、低功耗和较长的存储单元寿命而闻名。 MK米客方德 SLC Flash的优势 1. 快速的传输速度&a…

蓝牙AOA基站定位的优势与应用前景

在科技飞速发展的今天,人们对于定位技术的精度和稳定性要求越来越高。蓝牙AOA基站定位技术应运而生,以其高精度和低通信开销的特点,正逐渐改变我们对室内定位的认知。本文我们就一起来具体了解一下关于蓝牙AOA基站定位技术的优势及应用前景&a…

实现飞书机器人推送消息到指定群组或者用户

实现飞书机器人推送消息到指定群组或者用户 1 简介2 创建飞书应用2.1 注册登录2.2 创建应用2.3 添加应用能力2.4 权限管理3 发布应用4 代码示例4.1 获取应用ID与token4.2 使用Python SDK4.3 简单示例4.4 获取用户或机器人所在的群列表4.5 通过手机号或邮箱获取用户 ID4.6 给群组…

【Vue】普通组件的注册使用-局部注册

文章目录 一、组件注册的两种方式二、使用步骤三、练习 一、组件注册的两种方式 局部注册:只能在注册的组件内使用 ① 创建 .vue 文件 (三个组成部分) 以.vue结尾的组件,一般也叫做 单文件组件,即一个组件就是组件里的全部内容 ② 在使用的组…

【栈】1096. 花括号展开 II

本文涉及知识点 栈 LeetCode 1096. 花括号展开 II 如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符串。 花括号展开的表达式可以看作一个由 花括号、逗号 和 小写英文字母 组成的字符串,定义下面几条语法规则&…

树莓派4B_OpenCv学习笔记4:测试摄像头_imread加载显示图像_imwrite保存图片

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1: 今日对之前的测试CSI摄像头函数进行一些理解说明&#x…

混合关键性系统技术【同构异构】【SMP、AMP、BMP】【嵌入式虚拟化】

混合关键性系统技术【同构异构】【SMP、AMP、BMP】【嵌入式虚拟化】 1 介绍1.1 概述openEuler Embedded 的运行模式openEuler Embedded 混合关键性系统技术架构UniProton 1.2 同构异构区别 【硬件侧】1.3 系统架构【SMP、AMP、BMP】多核处理器平台的系统架构 【软件侧】【SMP、…

【RuoYi】框架中使用wangdietor富文本编辑器

一、前言 在上篇博客中,介绍了RuoYi中如何实现文件的上传与下载,那么这篇博客讲一下如何在RuoYi中使用富文本编辑器,这部分的内容是向B站程序员青戈学习的,当然我这里就会把学到的内容做一个总结,当然也会说…

Java基础语法---集合---ArrayList

ArrayList是什么 ArrayList可以看作是一个动态数组,提供了自动扩容的能力,意味着它能够根据需要自动调整其大小以容纳更多的元素,而无需预先指定数组的容量。 使用ArrayList需要加入包 import java.util.ArryList ArrayList与普通数组的不同…