深入理解 Java 中的 Switch 语句示例详解

 更新时间:2024年10月06日 09:41:50   作者:Yhame.  
在Java编程中,switch语句通过表达式值来执行不同代码块,本文介绍switch语法、案例、注意事项,以及与if语句的对比,包括基本语法、关键字、表达式、case常量、break和default的使用,以及如何根据输入的字符输出星期、大小写转换、成绩判断和季节判断等实际应用场景

深入理解 Java 中的 Switch 语句

在这里插入图片描述

在 Java 编程中,switch 语句是一种强大的控制结构,能够根据表达式的值选择执行不同的代码块。本文将详细介绍 switch 的基本语法、使用案例、注意事项以及与 if 语句的选择。

基本语法

switch 语句的基本语法如下:

switch (表达式) {
    case 常量1:
        // 执行代码块1
        break;
    case 常量2:
        // 执行代码块2
        break;
    ...
    default:
        // 执行默认代码块
}

关键点

  • 关键字:使用 switch 来声明分支结构。
  • 表达式:该表达式的值用于选择相应的 case
  • case 常量:当表达式的值等于某个常量时,将执行对应的代码块。
  • break:用于退出 switch,防止继续执行下一个 case
  • default:可选的,当没有任何 case 匹配时执行。

程序流程图

在这里插入图片描述

示例代码

以下是一个简单的示例,展示如何根据输入的字符输出对应的星期几:

import java.util.Scanner;
public class SwitchExample {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个字符(a-g):");
        char c1 = in.next().charAt(0);
        switch (c1) {
            case 'a':
                System.out.println("星期一");
                break;
            case 'b':
                System.out.println("星期二");
                break;
            case 'c':
                System.out.println("星期三");
                break;
            case 'd':
                System.out.println("星期四");
                break;
            case 'e':
                System.out.println("星期五");
                break;
            case 'f':
                System.out.println("星期六");
                break;
            case 'g':
                System.out.println("星期日");
                break;
            default:
                System.out.println("输入的内容不正确");
        }
        System.out.println("退出Switch,继续执行程序");
    }
}

注意事项

在使用 switch 语句时,需注意以下几点:

  • 数据类型匹配:表达式的数据类型应与 case 后的常量类型一致,或能自动转换。
  • 支持的数据类型switch 的表达式可以是 (byte, short, int, char, enum, String)
  • case 子句case 中的值必须是常量,不能是变量。
  • default 子句:可选的,未匹配时执行。如果不写,可能不会有输出。
  • break 语句:用于结束当前 case 的执行,若不写,则会顺序执行下一个 case 直到遇到 break

使用细节

public class SwitchDetail {
    public static void main(String[] args) {
        char c = 'a';
        System.out.println(c);  // 输出 a
        System.out.println((int) c);  // 输出 97
        switch (c) {
            case 'a':
                System.out.println("ok1");
                break;
            case 'b':
                System.out.println("ok1");
                break;
            case 20:  // char 类型可以转换为整数
                System.out.println("ok1");
                break;
            default:
                System.out.println("输入错误。");
        }
      //使用String类型示例,过程如下
		// char d = "a"
		// switch(c){
		// 	case "a":
		// 		System.out.println("ok1");
		// 		break;
		// 	case "b":
		// 		System.out.println("ok1");
		// 		break;
		// 	case 20:     //这里 会报错,这里的类型和String类型不能转换
		// 		System.out.println("ok1");
		// 		break;
		// 	default:
		// 		System.out.println("输入错误。");
		// }
    }
}

练习

  • 使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a, b, c, d, e. 其它的输出 “other”。
  • 对学生成绩大于 60 分的,输出"合格"。低于 60 分的,输出"不合格"。(注:输入的成绩不能大于 100), 提示 成绩/60
  • 根据用于指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 [课堂练习, 提示 使用穿透 ]

练习 1:小写字母转大写

import java.util.Scanner;
public class SwitchExercise {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个小写英文字母(a-e):");
        char c1 = in.next().charAt(0);
        switch (c1) {
            case 'a':
            case 'b':
            case 'c':
            case 'd':
            case 'e':
                System.out.println(c1 + "的大写是" + (char) (c1 - 32));
                break;
            default:
                System.out.println("other");
        }
    }
}

练习 2:成绩判断

// 这里使用编程思路,将成绩的范围转换成一个整数类型来进行判断,
//  [0-60]使用除法的思想把转换成一个整数
//  [60- 100] 同理使用相同的思路
import java.util.Scanner;
public class SwitchExercise02 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入你的分数:");
        int grade = in.nextInt();
        if (grade >= 0 && grade <= 100) {
            switch (grade / 60) {
                case 0:
                    System.out.println("不合格");
                    break;
                case 1:
                    System.out.println("合格");
                    break;
                default:
                    System.out.println("输入有误,请重新输入!!!");
            }
        }
    }
}

练习 3:季节判断

// 穿透的意思就是使用一个条件能够使所有的条件都能够符合使用
import java.util.Scanner;
public class SwitchExercise03 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个月份:");
        int month = in.nextInt();
        switch (month) {
            case 3:
            case 4:
            case 5:
                System.out.println("春季");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏季");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋季");
                break;
            case 12:
            case 1:
            case 2:
                System.out.println("冬季");
                break;
            default:
                System.out.println("输入有误,请重新输入!!!");
        }
    }
}

switch 与 if 的选择

  • 使用场景:当判断的具体数值不多且符合 byte, short, int, char, enum, String 类型时,推荐使用 switch 语句。
  • 适用范围:对于区间判断和布尔类型的判断,使用 if 语句更为灵活。

通过上述内容,相信你对 Java 中的 switch 语句有了更深入的理解。希望这篇文章能帮助你在编程中更加得心应手!

到此这篇关于深入理解 Java 中的 Switch 语句的文章就介绍到这了,更多相关Java Switch 语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IDEA快速部署Spring Boot 项目到Docker的实现方法

    IDEA快速部署Spring Boot 项目到Docker的实现方法

    本文主要介绍了IDEA快速部署Spring Boot 项目到Docker的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Springmvc自定义参数转换实现代码解析

    Springmvc自定义参数转换实现代码解析

    这篇文章主要介绍了Springmvc自定义参数转换实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • tomcat connection-timeout连接超时源码解析

    tomcat connection-timeout连接超时源码解析

    这篇文章主要为大家介绍了tomcat connection-timeout连接超时源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • springboot+vue+elementsUI实现分角色注册登录界面功能

    springboot+vue+elementsUI实现分角色注册登录界面功能

    这篇文章主要给大家介绍了关于springboot+vue+elementsUI实现分角色注册登录界面功能的相关资料,Spring Boot和Vue.js是两个非常流行的开源框架,可以用来构建Web应用程序,需要的朋友可以参考下
    2023-07-07
  • Java环境搭建Selenium代码自动化测试框架

    Java环境搭建Selenium代码自动化测试框架

    selenium是用来做web自动化测试框架,它支持各种浏览器(Chrome等),各种平台(Windows、Linux等),支持各种语言(Python、Java等),具有丰富的API,本文介绍了自动化测试的概念及其分类,重点介绍了Selenium自动化测试框架,包括其工作原理、环境搭建流程以及遇到问题的解决方法
    2026-01-01
  • mybatis-plus判断参数是否为空并作为查询条件详解

    mybatis-plus判断参数是否为空并作为查询条件详解

    文章介绍了MyBatis-Plus中判断参数是否为空并作为查询条件的两种方式:全局配置和单独判断,作者分享了自己的经验,希望能对大家有所帮助
    2026-03-03
  • IDEA2019.2.2配置Maven3.6.2打开出现Unable to import Maven project

    IDEA2019.2.2配置Maven3.6.2打开出现Unable to import Maven project

    这篇文章主要介绍了IDEA2019.2.2配置Maven3.6.2打开出现Unable to import Maven project,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java中图片转换为Base64的示例及注意事项

    Java中图片转换为Base64的示例及注意事项

    本文介绍了Base64编码的概念及其作用,同时列举了在实现图片转换为Base64过程中需要注意的问题,包括文件大小、读取异常、图片格式、网络传输效率以及数据安全性等,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • Java OpenCV图像处理之SIFT角点检测详解

    Java OpenCV图像处理之SIFT角点检测详解

    SIFT,即尺度不变特征变换,是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。本文将详细介绍一下Java OpenCV图像处理中的SIFT角点检测,需要的可以参考一下
    2022-02-02
  • 详解SpringBoot中使用JPA作为数据持久化框架

    详解SpringBoot中使用JPA作为数据持久化框架

    这篇文章主要介绍了SpringBoot中使用JPA作为数据持久化框架的相关知识,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论