首页 » 网站建设 » phpcaseswitch嵌套技巧_Java switch case语句详解

phpcaseswitch嵌套技巧_Java switch case语句详解

duote123 2024-12-14 0

扫一扫用手机浏览

文章目录 [+]

switch(表达式) { case 值1: 语句块1; break; case 值2: 语句块2; break; … case 值n: 语句块n; break; default: 语句块n+1; break;}

个中,switch、case、default、break 都是 Java 的关键字。

1)switch

表示“开关”,这个开关便是 switch 关键字后面小括号里的值,小括号里要放一个整型变量或字符型变量。
表达式必须为 byte,short,int,char类型。
Java7 增强了 switch 语句的功能,许可 switch 语句的掌握表达式是 java.lang.String 类型的变量或表达式。
只能是 java.lang.String 类型,不能是 StringBuffer 或 StringBuilder 这两种字符串的类型。

phpcaseswitch嵌套技巧_Java switch case语句详解

2)case

表示“情形,环境”,case 标签可以是:

phpcaseswitch嵌套技巧_Java switch case语句详解
(图片来自网络侵删)
类型为 char、byte、 short 或 int 的常量表达式。
列举常量。
从 Java SE 7 开始, case 标签还可以是字符串字面量。

例如:

String input = ...;switch (input.toLowerCase()) { // toLowerCase用于将大写字符转换为小写 case "yes": ... break;}

当在 switch 语句中利用列举常量时,不必在每个标签中指明列举名,可以由 switch 的表达式值确定。
例如:

Size sz = ...;switch (sz) { case SMALL: // no need to use Size.SMALL ... break; ...}

把稳:重复的 case 值是不许可的。

3)default

表示“默认”,即其他情形都不知足。
default 后要紧跟冒号,default 块和 case 块的先后顺序可以变动,不会影响程序实行结果。
常日,default 块放在末端,也可以省略不写。

4)break

表示“停滞”,即跳出当前构造。
如果在 case 分支语句的末端没有 break 语句,有可能触发多个 case 分支。
那么就会接着实行下一个 case 分支语句。
这种情形相称危险,常常会引发缺点。
为此,我们在程序中从不该用 switch 语句。
如果你喜好 switch 语句,编译代码时可以考虑加上 -Xlint:fallthrough 选项,如下所示:

javac -Xlint:fallthrough Test.java

这样一来,如果某个分支末了短缺一个 break 语句,编译器就会给出一个警告。
switch 语句的实行过程如下:表达式的值与每个 case 语句中的常量作比较。
如果创造了一个与之相匹配的,则实行该 case 语句后的代码。
如果没有一个 case 常量与表达式的值相匹配,则实行 default 语句。
当然,default 语句是可选的。
如果没有相匹配的 case 语句,也没有 default 语句,则什么也不实行。

图 1 switch语句实行流程图

例 1

在节目的抽奖环节里,节目组会根据每位高朋的座位号来进行抽奖游戏,根据不同的号码来决定奖项的大小。
利用 switch 语句编写 Java 程序来完成奖项分配,实在当代码如下。

public static void main(String[] args) { System.out.println("请输入座位号码:"); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); switch (num) { case 8: System.out.println("恭喜你,得到了三等奖!
"); break; case 88: System.out.println("恭喜你,得到了二等奖!
"); break; case 888: System.out.println("恭喜你,得到了一等奖!
"); break; default: System.out.println("感激参与!
"); break; }}

当用户输入的号码为 888 时,获取的 num 值为 888,则与第三个 case 后的值匹配,实行它后面的语句,输出“恭喜你,得到了一等奖!
”,然后实行 break 语句,跳出全体 switch 构造。
如果输入的号码与 case 中的值都不匹配,则实行 default 后的语句。
程序实行结果如下所示:

请输入座位号码:888恭喜你,得到了一等奖!

请输入座位号码:88恭喜你,得到了二等奖!

请输入座位号码:66感激参与!
例 2

编写一个 Java 程序,根据当前的星期数字输出对应的汉字。
在这里利用包含 break 的 switch 语句来判断当前的星期,实当代码如下:

public static void main(String[] args) { String weekDate = ""; Calendar calendar = Calendar.getInstance(); // 获取当前韶光 int week = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 获取星期的第几日 switch (week) { case 0: weekDate = "星期日"; break; case 1: weekDate = "星期一"; break; case 2: weekDate = "星期二"; break; case 3: weekDate = "星期三"; break; case 4: weekDate = "星期四"; break; case 5: weekDate = "星期五"; break; case 6: weekDate = "星期六"; break; } System.out.println("本日是 " + weekDate);}

本程序首先获取当前的星期值,然后利用 switch 语句判断 week 的值:0 表示星期日,1 表示星期一,2 表示星期二……以此类推,6 表示星期六。
只要 week 值与 case 值相符合,则程序将实行该 case 中的语句,并跳出 switch 语句,输出结果。
运行程序,输出的结果如下:

本日是星期五嵌套 switch 语句

可以将一个 switch 语句作为一个外部 switch 语句的语句序列的一部分,这称为嵌套 switch 语句。
由于一个 switch 语句定义了自己的块,外部 switch 语句和内部 switch 语句的 case 常量不会产生冲突。
例如,下面的程序段是完备精确的:

public static void main(String[] args) { switch (count) { case 1: switch (target) { case 0: System.out.println("target is zero"); break; case 1: System.out.println("target is one"); break; } break; case 2: // ... }}

本例中,内部 switch 语句中的case 1:语句与外部 switch 语句中的case 1:语句不冲突。
变量 count 仅与外层的 case 语句比较较。
如果变量 count 为 1,则变量 target 与内层的 case 语句比较较。
学到这里我们可以创造以下几点:

switch 语句不同于 if 语句的是 switch 语句仅能测试相等的情形,而 if 语句可打算任何类型的布尔表达式。
也便是 switch 语句只能探求 case 常量间某个值与表达式的值相匹配。
在同一个 switch 语句中没有两个相同的 case 常量。
当然,外部 switch 语句中的 case 常量可以和内部 switch 语句中的 case 常量相同。
switch 语句常日比一系列嵌套 if 语句更有效。

末了一点尤其有趣,由于它使我们知道 Java 编译器如何事情。
当编译一个 switch 语句时,Java 编译器将检讨每个 case 常量并且创造一个“跳转表”,这个表将用来在表达式值的根本上选择实行路径。
因此,如果你须要在一组值中做出选择,switch 语句将比与之等效的 if-else 语句快得多。
编译器可以这样做是由于它知道 case 常量都是同类型的,所要做的只是将它与 switch 表达式比较较看是否相等。
对付一系列的 if 表达式,编译器就无此功能。

if 语句和 switch 语句的差异

if 和 switch 语句都表示条件语句,可以从利用效率和实用性两方面加以区分。

1. 从利用效率上区分

从利用效率上区分,在对同一个变量的不同值作条件判断时,既可以利用 switch 语句,也可以利用 if 语句。
利用 switch 语句的效率更高一些,尤其是判断的分支越多,越明显。

2. 从实用性上区分

从语句的实用性角度区分,switch 语句不如 if 条件语句,if 语句是运用最广泛和最实用的语句。

3. 何时利用 if 语句和 switch 语句

在程序开拓的过程中,何时利用 if 语句和 switch 语句,须要根据实际情形而定,应只管即便做到物尽其用。
不能由于 switch 语句的效率高就一贯利用,也不能由于 if 语句常用就不用 switch 语句。
须要根据实际情形,详细问题详细剖析,利用最适宜的条件语句。
一样平常情形下,对付判断条件较少的,可以利用 if 条件语句,但是在实现一些多条件的判断中,最好利用 switch 语句。

「链接」

标签:

相关文章

php存入时光技巧_PHP导出百万条数据方法

首先先容一下当前可利用的资源:1、MySql - 一主库双从库。2、分布式做事器集群,选择个中一台中型机作为脚本实行载体。3、文件...

网站建设 2024-12-16 阅读0 评论0

php函数内常量技巧_PHP 常量详解教程

PHP 常量常量是单个值的标识符(名称)。在脚本中无法改变该值。有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。注释...

网站建设 2024-12-16 阅读0 评论0