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

2023-11-21 11:41:38 浏览数 (1)


theme: healer-readable

highlight: a11y-dark


哈喽,各位小伙伴们,你们好呀,我是喵手。

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

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

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

前言

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

摘要

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

正文

简介

if语句

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

代码语言:java复制
if (condition) {
    // 如果条件成立,执行此代码块
} else {
    // 如果条件不成立,执行此代码块
}

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

switch语句

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

代码语言:java复制
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语句的例子,代码如下:

代码语言:java复制
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语句的例子,代码如下:

代码语言:java复制
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语句进行身份认证的例子:

代码语言:java复制
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语句进行计算器运算的例子:

代码语言:java复制
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语句的例子:

代码语言:java复制
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语句的例子:

代码语言:java复制
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 !!!


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

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

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

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞