什么是switch case?

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch的语法

switch case 语句语法格式如下:

switch(expression){case value ://语句break; //可选case value ://语句break; //可选//你可以有任意数量的case语句default : //可选//语句
}

switch语句的原则

  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
  • switch 语句可以拥有多个 case 语句。
  • 每个 case 后面跟一个要比较的值和冒号。
  • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。 当遇到 break 语句时,switch 语句终止。
  • 程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。
  • 如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
  • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。
  • default 在没有 case 语句的值和变量值相等的时候执行。 default 分支不需要 break 语句。

switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。

看看这段代码:

public class Test {public static void main(String args[]){//char grade = args[0].charAt(0);char grade = 'C';switch(grade){case 'A' :System.out.println("优秀"); break;case 'B' :case 'C' :System.out.println("良好");break;case 'D' :System.out.println("及格");break;case 'F' :System.out.println("你需要再努力努力");break;default :System.out.println("未知等级");}System.out.println("你的等级是 " + grade);}
}

运行结果:

良好
你的等级是 C

如果 case 语句块中没有 break 语句时,JVM 并不会顺序输出每一个 case 对应的返回值,而是继续匹配,匹配不成功则返回默认 case。

还有这段代码:

public class Test {public static void main(String args[]){int i = 5;switch(i){case 0:System.out.println("0");case 1:System.out.println("1");case 2:System.out.println("2");default:System.out.println("default");}}
}

运行结果:

default

重点来了

如果没有break会怎么样呢? 如果 case 语句块中没有 break 语句时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出。 比如,看这段代码:

public class Test {public static void main(String args[]){int i = 1;switch(i){case 0:System.out.println("0");case 1:System.out.println("1");case 2:System.out.println("2");default:System.out.println("default");}}
}

运行结果:

1
2
default

如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。

public class Test {public static void main(String args[]){int i = 1;switch(i){case 0:System.out.println("0");case 1:System.out.println("1");case 2:System.out.println("2");case 3:System.out.println("3"); break;default:System.out.println("default");}}
}

运行结果:
1
2
3

default

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

break

表示“停止”,即跳出当前结构。 如果在 case 分支语句的末尾没有 break 语句,有可能触发多个 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: // ...}
}

if 语句和 switch 语句的区别

  • if 和 switch 语句都表示条件语句,可以从使用效率和实用性两方面加以区分。
  • 从使用效率上区分 从使用效率上区分,在对同一个变量的不同值作条件判断时,既可以使用 switch 语句,也可以使用 if 语句。
  • 使用 switch 语句的效率更高一些,尤其是判断的分支越多,越明显。
  • 从实用性上区分 从语句的实用性角度区分,switch 语句不如 if 条件语句,if 语句是应用最广泛和最实用的语句。
  • 何时使用 if 语句和 switch 语句 在程序开发的过程中,何时使用 if 语句和 switch 语句,需要根据实际情况而定,应尽量做到物尽其用。
  • 不能因为 switch 语句的效率高就一直使用,也不能因为 if 语句常用就不用 switch 语句。需要根据实际情况,具体问题具体分析,使用最适合的条件语句。
  • 一般情况下,对于判断条件较少的,可以使用 if 条件语句,但是在实现一些多条件的判断中,最好使用 switch 语句。

流程图

Java switch case 语句相关推荐

  1. java switch case语句_在Java中使用switch Case语句的例子

    当我们有多个选项,并且需要为每个选项执行不同的任务时,就需要使用Switch case语句. Switch case语句的语法如下-switch (variable or an integer exp ...

  2. Java修饰符、Java运算符、Java循环语句、Java条件语句、Java switch case

    Java 修饰符 Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class ...

  3. java break在switch_java中switch case语句需要加入break的原因解析

    java中switch case语句需要加入break的原因解析 java 中使用switch case语句需要加入break 做了具体的实例分析,及编译源码,在源码中分析应该如何使用,大家可以参考下 ...

  4. java的case_java中的switch case语句使用详解

    java中的switch case语句 switch-case语句格式如下: switch(变量){ case 变量值1: //; break; case 变量值2: //...; break; .. ...

  5. java中switchcase用法,java中的switch case语句使用详解

    java中的switch case语句 switch-case语句格式如下: ? swtich()变量类型只能是int.short.char.byte和enum类型(JDK 1.7 之后,类型也可以是 ...

  6. java switch case 跳转_Java switch case语句

    1.switch case 语句有如下规则: switch 语句中的变量类型可以是: byte.short.int 或者 char.从 Java SE 7 开始,switch 支持字符串 String ...

  7. java case switch面试_Java基础篇——Java中switch case语句用法及注意事项面试题9期

    本文主要说一说关于switch case语句用法及注意事项,应对面试官的提问.希望可以帮助那些对switch存在错误和各种细节问题的"码友". switch-case注意事项 sw ...

  8. java switch原则_Java switch case语句

    switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. switch case 语句语法格式如下: switch(expression){ case value : ...

  9. c语言case怎么输入字母,如何使用switch case语句将字母转换为数字

    我正在制作黑色插口游戏,并且需要使用switch case语句将A转换为11,将T,Q,J和K转换为10,但是我不确定如何执行代码.有人会帮助我解决这个问题吗?如何使用switch case语句将字母 ...

最新文章

  1. 图解使用CygWin进行Linux操作和编程
  2. J2EE dynamic web工程搭建 struts2
  3. SpringBoot入门教程(一)详解intellij idea搭建SpringBoot
  4. P3338 [ZJOI2014]力 FFT + 推式子
  5. vue使用python_如何使用Python和Vue创建两人游戏
  6. 深度优先遍历访问的边集合_数据结构与算法: 三十张图弄懂「图的两种遍历方式」...
  7. 7-模块开发卷宗(GB8567——88)
  8. html5录音支持pc和Android、ios部分浏览器,微信也是支持的,JavaScript getUserMedia
  9. 昔日网瘾少年,现在用AI教你打守望先锋
  10. 洛谷 P3049园林绿化 题解
  11. Matlab中的函数句柄@
  12. plc通讯的握手信号_PLC工程师教你:从原理搞懂RS485串口通讯
  13. SPSS问卷数据处理步骤
  14. openpose学习
  15. ami编码设计流程图_AMI码型变换实验 - 图文 -
  16. Android 省市区街道 四级联动
  17. 训练趣题:黑与白 有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。(此处用javascript实现)...
  18. Nature综述:一文揭秘土壤微生物的生死过程如何影响生物地球化学
  19. Dns数据包内容分析
  20. matlab 读取pts_matlab读取tiff卫星遥感图像和地理信息并转化为点云

热门文章

  1. python智能写诗的程序,Tensorflow Series 1: 使用LSTM实现古诗人工智能作诗
  2. 20张程序员才懂的搞笑图!保准你笑出猪叫......
  3. tmd123.com
  4. 烟来风吹火来水灭,智慧隧道的安全措施提升了200%
  5. html中小叉叉的图标,CSS3 勾和叉图标的变换动效
  6. COOKIE与SESSION的真正区别在哪?
  7. 数据分析---论文作者统计
  8. va_start和va_end详解
  9. XML语言与JSON
  10. 计算机外观屏幕怎么设计,京东划出“设计师电脑”分类,戴尔联想产品是如何诠释“设计师电脑”的?...