你真的了解Java中的switch条件语句吗?

您所在的位置:网站首页 awk条件语句 你真的了解Java中的switch条件语句吗?

你真的了解Java中的switch条件语句吗?

2023-04-14 11:44| 来源: 网络整理| 查看: 265

你了解Java中的switch条件语句吗?是的,我了解Java中的switch条件语句。switch语句是一种条件语句,可以让程序在不同的情况下执行不同的代码块。

1、代码案例展示

下面是一个使用switch语句的示例:

int dayOfWeek = 3; switch (dayOfWeek) { case 1: System.out.println("Today is Monday"); break; case 2: System.out.println("Today is Tuesday"); break; case 3: System.out.println("Today is Wednesday"); break; case 4: System.out.println("Today is Thursday"); break; case 5: System.out.println("Today is Friday"); break; case 6: System.out.println("Today is Saturday"); break; case 7: System.out.println("Today is Sunday"); break; default: System.out.println("Invalid day of week"); break; }

在这个例子中,switch语句根据dayOfWeek的值执行不同的代码块。如果dayOfWeek等于1,那么执行第一个case语句块;如果等于2,执行第二个case语句块,以此类推。如果dayOfWeek的值不在1到7之间,那么执行default语句块。

在每个case语句块的结尾处,都有一个break语句,用于结束switch语句的执行。如果没有break语句,那么会继续执行下一个case语句块,直到遇到break语句为止。

这个时候有朋友问了:Java中的switch这个关键字现在是不是很少有人用了?

这个也不一定啦,因为Java中,switch语句仍然是一种有效的控制流结构,但它的使用可能比其他控制流结构(如if语句和循环结构)更少。

在某些情况下,switch语句可以比if语句更加简洁和可读,特别是当你需要在多个条件中选择一个时。然而,在其他情况下,if语句可能更加灵活,例如当你需要比较一个范围而不是一个具体的值时。

此外,对于某些开发者而言,switch语句的限制也可能是它不太受欢迎的原因之一。例如,switch语句中的每个case标签必须是一个常量表达式,这意味着你无法在运行时动态计算case标签。

总之,虽然在某些情况下switch语句可能是一种更好的选择,但在其他情况下,if语句可能更加适合。因此,是否使用switch语句取决于具体的情况和开发者的偏好。

而且目前switch还出来新特性。

2、switch新特性2.1概述

我们知道,在使用switch时有可能会出现”case穿透“现象。如果你遗漏了break语句,有可能会造成严重的逻辑错误,而且这种错误还不太容易在源码中发现。所以为了防止意外出现”case穿透“,从JDK 12开始,switch语句升级成了更简单的表达式语法,使用了一种类似于模式匹配(Pattern Matching)的方式,确保只有一个路径会被执行,而且不再需要我们手动添加break语句。

这一新特性,可以说简化了不少无效代码,还规避了一定的风险,简直不要太赞哦。接下来就给大家设计几个案例,说说JDK 12中switch的使用。因为壹哥当前的JDK版本是JDK 17,可以向下兼容JDK 12,所以我们不用单独安装JDK 12哦。

2.2代码案例

2.2.1->符号

在JDK 12的switch语句中,支持使用->符号,当然也可以不使用->符号,继续采用以前的写法也没问题。如果case后面只有一条语句,可以直接在->后面编写该语句;如果有多条语句,需要用{}括起来。另外在JDK 12的switch语句中,不用再写break语句,新的语法只会执行匹配的语句,不会出现”穿透效应“。

public class Demo01 { public static void main(String[] args) { // switch结构-case穿透 System.out.println("请选择你的国家"); Scanner sc = new Scanner(System.in); String country = sc.next(); switch (country) { case "中国" -> System.out.println("我是中国人,我自豪!"); case "日本" -> System.out.println("鬼子脚盆鸡"); case "美国" -> { System.out.println("暂时还是老大"); System.out.println("喜欢欺负人"); } default -> System.out.println("未知国籍,黑户"); } } }

2.2.2switch中返回结果

在JDK 12中,我们可以把在switch语句中把产生的结果直接返回,不必再使用break语句进行结束。一般情况下,我们在switch表达式内部只会返回简单的值。但如果你想要处理多个复杂的语句,其实也可以写很多语句,这些代码都要放到放到{...}里面,然后使用yield关键字(以后细讲)进行返回。配套案例如下:

public class Demo01 { public static void main(String[] args) { // switch结构-case穿透 System.out.println("请选择你的国家"); Scanner sc = new Scanner(System.in); String country = sc.next(); // 注意:这里的返回值类型,可以是任意类型。我们后面在学习方法时再细说返回值的问题 String result = switch (country) { case "中国" -> "我是中国人,我自豪!"; case "日本" -> "鬼子脚盆鸡";// 返回值只能有一个 case "美国" -> { String str = "我们就喜欢以德服人"; // 注意:这里需要返回一个变量!!! yield str; } default -> "未知国籍,黑户"; };// 注意:这里需要有个“;”,表示语句的结束 System.out.println("你的国家情况:" + result); } }

现在大家明白了吗,不要根据别人的喜好来判断它是否有用,还是要自己用过之后再去判断,但是刚入门的朋友们还是要好好学习哈!

最后赠送大家一道面试题:if和switch的区别?

1.相同点if和switch都是Java里的分支选择语句,它俩都属于条件分支语句;很多时候,if和swich可以实现的效果类似。2.不同点switch结构只能处理等值条件判断的情况,且条件必须是整型、枚举变量或字符型变量;多重if选择结构没有switch结构的诸多限制,特别适合某个变量处于某个连续区间时的情况;if比switch应用范围更广、更灵活。if可以实现的条件判断,switch不一定能够实现;switch可以实现的条件判断,if肯定可以实现。if 在应用中更为常见,但switch的结构更清晰。switch使用查找表比对的方式,使得case的条件必须是连续的常量,if语句则没有这些限制。一般情况下,switch比if-else效率更高。因为switch内部使用了Binary Tree算法,不管有多少个case,都只计算一次值,直接跳转,不需逐个比较查询,除非是if-else的第一个条件就为true。switch的效率其实与分支数无关。只有当分支比较少时,if语句的效率才比switch高,因为switch有跳转表。当分支较多时,推荐使用switch语句。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3