JAVA-Switch语句

article/2025/10/7 15:18:20

1、完整的语法结构

        该语句为选择分支语句,其语法结构为:

switch (值){case:值1 java语句;break;case:值2 java语句;break;case:值3 java语句;break;……default:java语句;
}

        注意在该语法结构中,“值N"可以表示int型的或者String类型的字面值或变量,Java语句可以是一句,也可以是多句构成的语句块;

2、switch语句参数

        “值N"可以表示int型的或者String类型的字面值或变量”这就是对switch语句的一个参数类型的限制。之前在数据类型那里提到,byte、short、char具有特权,就是如果赋值给他们的整形字面值在取值范围之内,是可以直接赋值的,所以这就意味着,参数可以是byte,short,char类型的变量或者字面值。

       注意:JDK6参数只能是int类型,JDK7之后的版后边的参数可以是int和String类型的参数

        这也就意味着,如果参数传入一个更大的参数类型或者不兼容的参数类型,有可能会报错且损失精度,但是如果符合您的需求,可以通过强制类型转换符”(  )”来进行类型的转换,可以解决编译时的报错问题。

Scanner in=new Scanner(System.in);long data=in.nextInt();switch (data) {case 0:case 1:case 2:System.out.println(data);case 3:case 4:case 5:System.out.print(data+1);}
D:\Idea\JAVATEST\src\test\test02.java:418:16
java: 不兼容的类型: 从long转换到int可能会有损失

加入强转:

    Scanner in=new Scanner(System.in);long data=in.nextInt();switch ((int)data) {case 0:case 1:case 2:System.out.println(data);case 3:case 4:case 5:System.out.print(data+1);}

可以顺利执行:

1
1
2
进程已结束,退出代码为 0

3、Switch语句的执行原理( 电闸原理)

        switch后括号中的内容按照自上而下的顺序和分支case后的值进行一 一对比,如果匹配成功,则执行该case分支所对应的Java语句。【通过电闸进行理解,如果值相同,则电闸连通分支;break就相当于切断电闸,断掉主干和分支之间的连通,switch语句的执行就彻底结束了。】如果所有的case语句的值和switch的值均无法对应,那么看是否存在default语句,如果存在,则执行default语句,否则switch语句在没有分支成功匹配的情况下,会彻底结束。

(1)case击穿现象

        注意在switch语句的运行原理中有一个很重要的原理,就是case的击穿现象,理解了这个现象才能更好的应用switch语句进行代码的编写。

        所谓的case击穿现象,其实和break语句有关,当某个case分支连通,执行其后的java语句后,如果没有遇到break语句,则会继续执行,但是无需判断后边case分支的值,直接执行java语句,如此直到遇到break语句后,switch的语句彻底执行结束,这就是我们说的case击穿想想的原理。

        由此我们可以看出,break语句的存在可以避免击穿现象的发生。

        举例说明:接收用户输入,如果用户输入的是0,1,2,则进行输出,如果用户输入的是3,4,5则进行加一然后再输出;

Scanner in=new Scanner(System.in);int data=in.nextInt();switch (data) {case 0:case 1:case 2:System.out.print(data);case 3:case 4:case 5:System.out.print(data+1);}

        键盘输入数值1,输出如下所示:

1
1
2
进程已结束,退出代码为 0

        很明显,case 3,case 4,case 5三种情况对应的分支也运行了。

(2)case合并

        如果有需要,例如多个case分支的值的执行操作是相同的,这种情况下,就可以去合并多个case,只写次java操作语句即可。例如:接收用户输入,如果用户输入的是0,1,2,则进行输出,如果用户输入的是3,4,5则进行加一然后再输出;

        代码示例如下:

Scanner in=new Scanner(System.in);int data=in.nextInt();switch (data) {case 0:case 1:case 2:System.out.print(data); break;case 3:case 4:case 5:System.out.print(data+1);break;}

        输入3,4,5,输出结果分别为4,5,6

        输入1,2,3,输出结果分别为1,2,3


例一、时间输出

        Scanner in=new Scanner(System.in);int date=in.nextInt();String time="";switch(date){case 1:time="星期一";break;case 2:time="星期二";break;}System.out.println("今天是"+time);

输出结果:

1
今天是星期一进程已结束,退出代码为 0

例二、成绩等级划分

该例子需要找到数据之间存在的一个逻辑规律

35
35.0对应的成绩等级为:E
进程已结束,退出代码为 0

         对于这个对照关系,如果用if语句很简单的就可以写出来,但是我们要练习的是switch语句的熟练使用。

        那么在这些区间中找出一个能够代表各区间的具有规律的一个数值,成绩在在90-100之间无论整数还是浮点数,除以10得到的都是9,一次类推,各阶段除以10依次对应:

        A——9,B——8,C——7,D——6,E——(5.4.3.2.1)

        所以用switch进行代码编写如下:

        Scanner in=new Scanner(System.in);float score=in.nextFloat();char grade=' ';switch ((int)score/10){case 9:grade='A';break;case 8:grade='B';break;case 7:grade='C';break;case 6:grade='D';break;default:grade='E';break;}System.out.print(score+"对应的成绩等级为:"+grade);

输出如下所示:

35
35.0对应的成绩等级为:E
进程已结束,退出代码为 0

http://chatgpt.dhexx.cn/article/pcdE4FDa.shtml

相关文章

java中的常用语句

Java中的常用语句 一、Java中的语句由3大类的结构 1.顺序结构—自上而下一行一行的有序的执行 2.选择结构 (1)If语句结构 (2)Switch语句结构 3.循环结构 (1)For循环 (2)While循环 (3)Do{}while()循环 二、判断语句中if语句的表现方式和用法 1.if(){} 2.if(){}else{} 3.if(){}e…

4.java中的常见语句

1.顺序结构语句 写好的代码从上往下按照顺序一行一行的执行。 2.选择结构语句 根据判断结果有选择性的执行代码. 2.1 if语句 1.if(判断条件){需要执行的java代码} 首先执行判断条件,如果判断条件的结果为true,就执行“{}”中的java代码&#x…

java基本语法(史上最全)

java基本语法(史上最全) (一)关键字和保留字 关键字的定义和特点 定义:被java语言赋予了特殊含义,用作专门用途的字符串。 特点:关键字中所有字母都为小写。关键字不能用作变量名&#xff0…

Linux Makefile ifeq正确使用

今晚和昨晚捣鼓了很久ifeq,怎么也得不出正确结果。当时我是这么用ifeq的 all: ifeq("ad","cd") echo yes else echo no endif 得出的结果是: 后来经仔细对比发现要这样写 all: ifeq ("ad", "cd&q…

关于shiro

shiro ​ shiro处理的两个过程,一个是登录,这个过程完成后产生一个用户jwt,一个是访问接口时,通过jwt来完成验证的过程 登录逻辑: 访问接口逻辑: 认证(authentication)&#xff1a…

shiro的简单介绍

1.Shiro的简单配置 1) 获取ShiroFilterFactoryBean,作用是在执行相关操作前,先进行功能过滤,拦截所有请求,进入到shiro中进行认证与授权 例如:设置一些拦截的请求 // 身份认证失败,则跳转到登录…

Shiro相关基础知识

文章目录 前言一、Shiro相关基础知识1.Shiro是什么2.Shiro具体功能3.Shiro的整体结构与重要组件4.Shiro各模块基础知识1)Authentication 认证模块2)Authorization 授权模块3)Realm 认证模块 5.Shiro集成到web应用 二、Shiro相关漏洞1. Shiro漏…

面试总结:Shiro框架

文章目录 Apache Shiro框架1. 简单介绍一下Shiro 框架2. Shiro 主要的四个组件3. Shiro 运行原理4. Shiro 的四种权限控制方式5. 授权实现的流程(1)、什么是粗颗粒和细颗粒权限?(2)、粗颗粒和细颗粒如何授权&#xff1…

shiro安全框架详解。面试必备

shiro核心就是过滤器。 认证授权流程: ● 认证:对用户的身份进行检查(登录验证) ● 授权:对用户的权限进行检查(是否有对应的操作权限) ● 流程图: 权限管理 实现权限的动态分配&a…

面试专题系列-Shiro

1.什么是shiro Apache Shiro 是 Java 的一个安全框架。使用 shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE环境,也可以用在 JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与 Web 集成、缓存等。 2.Sh…

shiro(详解)

这里写自定义目录标题 什么是shiro什么是权限管理什么是身份认证什么是授权SubjectSecurityManagerAuthenticatorAuthorizerRealmSessionManagerSessionDAOCacheManagerCryptography面试题认证的开发1. 创建项目并引入依赖2. 引入shiro配置文件并加入如下配置 自定义Realm自定义…

【JAVA面试题整理】框架之Shiro

一、简单介绍一下Shiro框架 Apache Shiro是java的一个安全框架。使用shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。 三…

shiro总结

shiro主要内容: 1:SecurityUtils shiro提供的工具类,主要作用是获取 SecurityManager和Subject public abstract class SecurityUtils {private static SecurityManager securityManager;//获取Subjectpublic static Subject getSubject() {Subject subject ThreadContext.…

Java面试系列总结 :Shiro

1. 简单介绍一下Shiro框架 Apache Shiro是Java的一个安全框架。使用shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。 三个…

Shiro知识总结二

3. 与 Spring Boot 整合 3.1 框架整合 依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>o…

Shiro相关知识

1、Shiro功能概述 Apache Shiro是一个功能强大且易于使用的 Java 安全框架&#xff0c;可执行身份验证、授权、加密和会话管理。 主要功能&#xff1a; Authentication&#xff1a;身份认证。登录时验证身份信息。 Authorization&#xff1a;授权操作。访问控制的过程&…

Spring、SpringMVC、Shiro面试题

Tags : JavaEE,Spring,面试题发表时间&#xff1a; 2014-11-29 15:03:53 原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 比如&#xff1a; 转自&#xff1a;Su的技术博客 原文地址&#xff…

Shiro知识总结一

1. 基础知识 1.1 什么是Shiro Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完成&#xff1a;认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应…

Shiro总结面试问题

Shiro总结 Shiro可做哪些事&#xff1a; 认证、授权、加密、会话管理、与web集成、缓存等 最简单的Shiro应用是怎样运行的&#xff1a; 应用代码通过Subject来进行认证和授权&#xff0c;而Subject又委托给SecurityManager 我们需要给Shiro的SecurityManager注入Realm,从而让S…

python中socket进行多线程,利用 Socket怎么在Python项目中实现一个多线程并发功能...

利用 Socket怎么在Python项目中实现一个多线程并发功能 发布时间:2020-12-11 13:55:06 来源:亿速云 阅读:95 作者:Leah 这篇文章给大家介绍利用 Socket怎么在Python项目中实现一个多线程并发功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 1.S…