switch 语句和if 语句一样,都属于选择语句(分支语句),不再赘述,我们直接来看一下一个比较完整的switch 语句结构是怎样的。
如图所示:
switch语句的运行原理
小括号中的数据 和case表达式中的数据进行比较,如果相等,则执行语句;如果不相等,继续继续和下面case表达式中的数据比较,如果小括号中的数据和所有的case分支表达式数据都不相等,则执行 default 分支的语句。
使用switch语句你需要知道的三件事:
(1)switch 语句后面的小括号“()”当中都可以出现什么,在JDK1.6 之前(包括1.6 在内)switch 只能探测int 类型的数据,但是在JDK1.7 之后(包括1.7 在内),switch 语句除了支持int 类型之外,还支持 String 类型。也就是说从 Java7 开始 switch 后面小括号中可以出现字符串。
(2)switch 虽然只能探测int 类型,但是也可以byte,short,char 类型放到小括号当中,因为这些类型会自动转换成int 类型(小容量向大容量转换称为自动类型转换)。
(3)switch 语句当中当某个分支匹配成功,则开始执行此分支当中的java 语句,当遇到当前分支中的“break;”语句,switch 语句就结束了,但是如果当前分支中没有“break;”语句,则会发生 case 穿透现象,也就是说下一个分支也不再进行匹配,直接进入下一个分支执行,直到遇到“break;”为止。
总结:
if 和 switch 都是条件判断语句(分支语句/选择语句),在效果上是没有什么差别的。
但是对于范围判断(如使用关系及逻辑运算符),必然是使用if来进行操作。