Java 中 switch 的用法

这篇具有很好参考价值的文章主要介绍了Java 中 switch 的用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java 中 switch 的用法

1、switch 中的表达式的数据的数据类型为 byte, short, int, char, String(jdk > 1.7支持 String 类型)
2、default 可以放在任意一行,但是不管放在那一行,都会先找第一个case去匹配,如果所有的 case 都不匹配,才会执行 default,default 可以省略不写。
3、break 可以不写,就容易造成 switch 的穿透现象,如果匹配过一次或者执行过 default 之后,都不会再进行二次匹配了,但是语句体内容该执行还是会执行。

JDK 12 对 switch 进行扩展,使其可以用作语句或表达式。

一、Java 中 switch 的语法

1、冒号(:):有直通行为

标准方式,使用 break 防止 case 代码执行穿透。

2、 箭头(->):无直通行为

使用 switch 标准方式编写代码太多的 break 造成代码冗余可读性不高,	可以借助函数式接口和 lambda 表达式简化书写。

3、break:

break 防止 case 代码执行穿透;

4、yield :返回值

二、switch 语句

1、标准方式,有直通行为

switch(seasonName){
	case "Spring":
		System.out.println("spring time");
	case "Summer","Winter":
		numLetters = 6;
		break;
	case "Fall":
		numLetters = 4;
		break;
	default:
		numLetters = -1;
}

2、lambda 表达式书写,无直通行为

switch(seasonName){
	case "Spring" -> {
		System.out.println("spring time");
		numLetters = 6;
		}
	case "Summer","Winter" -> numLetters = 6;
	case "Fall" -> numLetters = 4;
	default -> numLetters = -1;
}

三、switch 表达式

public class Test {
    enum Alpha {A, B, C, D, E;}

    public static void main(String[] args) {
        System.out.print(fun(Alpha.A));
    }

    static char fun(Alpha alpha) {
        var r = switch (alpha) {
            case A -> 'a';
            case B -> 'b';
            case C -> 'c';
            case D -> 'd';
            default -> 'x';
        };
        return r;
    }
}

1、有直通行为(Java 14引入)

        String seasonName = "Spring";
        int numLetters;
        numLetters = switch(seasonName){
            case "Spring":
                System.out.println("spring time");
            case "Summer","Winter":
                yield 6;
            case "Fall":
                yield 4;
            default:
                yield -1;
        };
        System.out.println(numLetters);

2、无直通行为

int numLetters;
numLetters = switch(seasonName){
    case "Spring" ->{
        System.out.println("spring time");
        yield 6;
    }
    case "Summer","Winter" -> 6;
    case "Fall" -> 4;
    default -> -1;
};

注意

  1. switch() 括号内 seasonName,应与 case 后常量类型保持一致,或者是可以自动转换成可以互相比较的类型。
  2. case 标签:类型为 char、byte、short 或 int 的常量表达式;枚举常量 enum;字符串字面量 String;多个字符串用逗号分隔。
  3. case 子句中的值必须是常量,不能是变量。
  4. 在语句中,default 是可选的。
  5. break 和 yield 语句用来在执行完一个 case 分支后使程序跳出 switch 语句,如果没有 break 或 yield,程序会顺序执行到 switch 结尾,产生直通行为。
  6. 不能在一个 switch 语句中混合使用冒号和箭头。
  7. 与 break 语句类似,yield 会终止执行。但与 break 不同的是,yield 还会生成一个值,这就是表达式的值。

四、Switch 语句与表达式的区别:

  1. switch 代码块出现在了赋值运算符的右侧;
  2. 一个 case 语句,可以处理多个情景;
  3. 新的情景操作符,“->”,它是一个箭头标识符;
  4. 箭头标识符右侧的数值。这个数值,代表的就是该匹配情景下,switch 表达式的数值。需要注意的是,箭头标识符右侧可以是表达式、代码块或者异常抛出语句,而不能是其他的形式;
  5. yield 语句产生的值看成是 switch 表达式的返回值。所以,yield 只能用在 switch 表达式里。

Java 枚举(enum)

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。

Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 (,) 来分割。

颜色的枚举类
enum Color{ RED, GREEN, BLUE; }
以上枚举类 Color 颜色常量有 RED, GREEN, BLUE,分别表示红色,绿色,蓝色。文章来源地址https://www.toymoban.com/news/detail-752224.html

enum Color{ RED, GREEN, BLUE; }   
public class Test {    
    public static void main(String[] args){ 
        Color c1 = Color.RED; 
        System.out.println(c1); 
    } 
}

到了这里,关于Java 中 switch 的用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring】Spring基础知识 Java开发必看

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前专攻C/C++、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL、蓝桥杯,喜欢OJ的小伙伴可以看一手 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️学习应使你快乐!望与诸君

    2024年02月13日
    浏览(42)
  • JAVA后端开发面试基础知识(八)——Spring

    Spring是一个轻量级Java开发框架 我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发,比如说 Spring 支持 IoC(Inverse of Control:控制反转) 和 AOP(Aspect-Oriented Programming:面向切面编程)、可以很方便地对数据库进行访问、

    2024年03月10日
    浏览(72)
  • 《C语言初阶》这篇文章带你全面认识switch语句的用法!

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,又是新的一天开始了,今天给大家带来的switch语句的全面讲解!    ⛳️ 预计博主这俩天会把分支语句和循环语句给彻底

    2024年02月12日
    浏览(45)
  • 【C语言初阶】分支语句If与switch的具体用法,有这篇博客就够了

    君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello,这里是君兮_,今天又来给大家更新0基础学习C语言中的文章啦! 今天带来的是对分支语句的详解,初学者建议先看看总集哦, 这里是链接: 【C语言初阶】万字解析,带你0基础快速入门C语言(上) 【C语言初阶】万字解析

    2024年02月11日
    浏览(60)
  • Java语言开发在线小说推荐网 小说推荐系统 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据、人工智能、机器学习开发

    1、开发工具和使用技术 MyEclipse10/Eclipse/IDEA,jdk1.8,mysql5.5/mysql8,navicat数据库管理工具,tomcat,SSM(spring+springmvc+mybatis)开发框架,jsp页面,javascript脚本,jquery脚本,bootstrap前端框架(用户端),layui前端框架(管理员端),layer弹窗组件等。 2、实现功能 前台用户包含:注

    2023年04月26日
    浏览(79)
  • java_基础语法及用法

    JAVA EE的十三种规范 1.被final修饰的类不可以被继承 2.被final修饰的方法不可以被重写 3.被final修饰的变量不可以被改变 被static修饰的方法和变量是和这个类关联在一起的,被类的所有实例对象所共享 “抓抛”模型: 1.抛:异常的 生成 方式 2.抓:异常的 处理 方式 异常的两种

    2024年02月13日
    浏览(34)
  • Java开发 - Canal的基本用法

    今天给大家带来的是Canal的基本用法,Canal在Java中常被我们用来做数据的同步,当然不是MySQL与MySQL,Redis与Redis之间了,如果是他们,那就好办了,我们可以直接通过配置来完成他们之间的主从、主主,级联等的同步,为什么要用Canal呢?主要是为了完成MySQL与Redis、MySQL与ES之

    2024年02月11日
    浏览(59)
  • elasticsearch7基础用法及java中使用

    GET、POST、PUT、DELETE、HEAD。 id content 1001 my name is zhang san 1002 i name is li si 1003 my name is wang wu keyword id name 1001,1002,1003 zhang 1001a my 1001,1003 PUT请求:http://127.0.0.1:9200/索引名称 返回值: 表头 含义 health 当前服务器健康状态: green (集群完整) yellow (单点正常、集群不完整) red(单点不正

    2024年02月03日
    浏览(35)
  • 【Java基础教程】(四)程序概念篇 · 中:探索Java编程基础,解析各类运算符功能、用法及其应用场景~

    掌握Java中各类运算符及其运算使用; Java中的语句有很多种形式,表达式就是其中一种形式。 Java中的表达式由操作数、运算符、结果类型和求值顺序等元素组成 ,这些元素共同构成了复杂的逻辑和计算过程。 操作数(Operands) :操作数是表达式中的值或者变量,它们可以是

    2024年02月12日
    浏览(63)
  • 【Java基础】Stream 流中 Collectors.toMap 的用法

    Collectors.toMap() 方法是把 List 转 Map 的操作 1.1、如果不是对象,是数组,怎么转成map? 按照规范来写的话,最好所有toMap,都要将这个异常提前考虑进去,不然有时候会报重复主键异常,这也是正例的写法,上面的属于反例的写法。 2.1、Collectors.toMap 有三个重载方法:  参数解

    2024年02月14日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包