我们都知道 switch 用来走流程分支,大多情况下用来匹配单个值,如下面的例子所示:

/**
* @from 微信公众号:Java技术栈
* @author 栈长
*/
private static void test(int value) {
switch (value) {
case 1:
System.out.println("1");
break;
case 2:
System.out.println("1");
break;
case 3:
System.out.println("1");
break;
case 4:
System.out.println("1");
break;
case 5:
System.out.println("1");
break;
case 6:
System.out.println("0");
break;
case 7:
System.out.println("0");
break;
default:
System.out.println("-1");
}
}

相关阅读:switch case 支持的 6 种数据类型。

大概的意思就是,周一到周五输出:1,周六到周日输出:0,默认输出-1。

这样写,很多重复的逻辑,冗余了。

也许这个例子不是很合适,用 if/ else 更恰当,但这只是个例子,实际开发中肯定会有某几个 case 匹配同一段逻辑的情况。

那么,如何让多个 case 匹配同一段逻辑呢?

如下面例子所示:

/**
* @from 微信公众号:Java技术栈
* @author 栈长
*/
private static void test(int value) {
switch (value) {
case 1: case 2: case 3: case 4: case 5:
System.out.println("1");
break;
case 6: case 7:
System.out.println("0");
break;
default:
System.out.println("-1");
}
}

把相同逻辑的 case 放一起,最后一个 case 写逻辑就行了。

格式化后就是这样了:

/**
* @from 微信公众号:Java技术栈
* @author 栈长
*/
private static void test(int value) {
switch (value) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("1");
break;
case 6:
case 7:
System.out.println("0");
break;
default:
System.out.println("-1");
}
}

是不是很骚?

其实这不是最合适的最好的写法,在 Java 12 中还可以更骚。

在 Java 12 中可以用逗号来分开多个值,还能用 lambda 表达式,甚至还能省略 break,使用 switch 更方便,具体看这篇文章:Java 12 骚操作, switch居然还能这样玩。

switch多值匹配骚操作,带你涨姿势!的更多相关文章

  1. Github 骚操作

    GitHub 竟然有这些骚操作,真是涨姿势 GitHub,不用过多介绍.一个面向开源及私有软件项目的托管平台,因为只支持 git 作为唯一的版本库格式进行托管,故名 GitHub. 作为「全球最大的程 ...

  2. switch case多值匹配

    switch case多值匹配一般有两种情况 1.列举(将所有值列举出来) var n= 3;switch (n){    case 1:     case 2:    case 3:         ...

  3. Luogu 1559 运动员最佳匹配问题(带权二分图最大匹配)

    Luogu 1559 运动员最佳匹配问题(带权二分图最大匹配) Description 羽毛球队有男女运动员各n人.给定2 个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组成混合双打的 ...

  4. 如何在命令长度受限的情况下成功get到webshell(函数参数受限突破、mysql的骚操作)

    0x01 问题提出 还记得上篇文章记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门),我们讲到了一些PHP的一些如何巧妙地绕过数字和字母受限的技巧,今天我要给大家分享的是如 ...

  5. 关于map 及 map 骚操作

    关于map这个东西   很冷门..................   但是,这个博客带你稍微了解一下map:   map用法:一般当作一个下表无穷大的数组   关于它的骚操作:map的鬼畜用法,可以 ...

  6. 通过HTTP的HEADER完成各种骚操作

    作为一名专业的切图工程师,我从来不care网页的header,最多关心Status Code是不是200.但是HEADER真的很重要啊,客户端从服务器端获取内容,首先就是通过HEADER进行各种沟通! ...

  7. 关于MySQL的一些骚操作——提升正确性,抠点性能

    概要 回顾以前写的项目,发现在规范的时候,还是可以做点骚操作的. 假使以后还有新的项目用到了MySQL,那么肯定是要实践一番的. 为了准备,创建测试数据表(建表语句中默认使用utf8mb4以及utf8 ...

  8. Kuhn-Munkras算法解决二分图最优权值匹配

    在看这篇博文之前建议看一下上一篇匈牙利法解决二分图最大匹配问题: https://www.cnblogs.com/fangxiaoqi/p/10808729.html 这篇博文参考自:https:// ...

  9. SQL从入门到基础 - 04 SQLServer基础2(数据删除、数据检索、数据汇总、数据排序、通配符过滤、空值处理、多值匹配)

    一.数据删除 1. 删除表中全部数据:Delete from T_Person. 2. Delete 只是删除数据,表还在,和Drop Table(数据和表全部删除)不同. 3. Delete 也可以 ...

随机推荐

  1. @loj - 2250@ 「ZJOI2017」仙人掌

    目录 @题目描述@ @solution@ @accepted code@ @details@ @题目描述@ 如果一个无自环无重边无向连通图的任意一条边最多属于一个简单环,我们就称之为仙人掌.所谓简单环 ...

  2. OpenStack组件系列☞horizon搭建

    第一步:部署horizon环境: 安装部署memcache 安装软件包 yum install memcached python-memcached 启动memcache并且设置开机自启动 syste ...

  3. 【学生研究课题】CSDN博客数据获取、分析、分享

    题记     这次<对象程序设计>课程设计,一共给定了8个选题(下载WORD版.PDF版),以及自由选题的机会.从大家初步选题结果来看(图1).绝大部分同学选择了"图形用户界面的 ...

  4. Android教程-02 在程序中输出Log

    视频教程,建议采用超清模式观看 在Android中一般都用Log输出日志,常见的有5个不同的级别 Log.v() Log.d() Log.i() Log.w() Log.e() 当然很多程序员还比较习 ...

  5. 常用的python内建函数

    raw_input() 函数说明 函数签名:raw_input([prompt]) 使用形式如下: raw_input([prompt]) -> string 如果提供了参数prompt,就会在 ...

  6. docker swarm搭建tidb踩坑日记

    背景 公司新项目数据量翻了一倍,每天上亿数据量的读写,传统的单库单表已经满足不了目前的需求,得考虑下分布式存储了.那用啥呢,之前有考虑用到mycat,但是一进官网,一股山寨气息扑面而来,技术群进群还收 ...

  7. python基础十一之迭代器和生成器

    可迭代 内置方法中含有__iter__的数据类型都是可迭代的,只要是可迭代的就可以使用for循环,反之亦然. print(dir('')) # dir()函数可以获取当前数据类型的所有内置方法 返回值 ...

  8. H5 存储数据sessionStorage

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 总结:关于留学网站使用laravel框架的总结

    1.从git库中clone后本地项目根目录没有vendor文件夹,安装composer 2.composer install 报错 ,删除 composer.lock 文件,重新执行 composer ...

  10. H3C VLAN基本配置