-
switch
括号内的表达式必须是整数类型或者可以转换为整型的数值类型,例如byte
、short
、int
、char
,也可以直接是整数或字符常量,甚至可以是枚举类型。需要强调的是,float
、double
、long
和String
类型不能直接用于switch
语句。 -
switch
下的case
和default
必须用一对大括号{}
括起来。 -
当
switch
后面括号内的表达式的值与某个case
后面的常量表达式的值相等时,就会执行该case
后面的语句。执行完一个case
后面的语句后,流程控制将转移到下一个case
继续执行。如果只想执行当前case
语句而不想执行其他case
,则需要在该case
语句后面加上break
,以跳出switch
语句。
注:
switch
是一个选择语句,不是循环语句。break
一般用于跳出循环,但也可用于跳出switch
语句。
-
如果所有
case
中的常量表达式的值都不与switch
后面括号内的表达式的值相等,则会执行default
后面的语句。default
表示默认情况。如果default
是最后一条语句的话,可以省略break
,因为既然已经是最后一句了,执行完后自然会退出switch
。 -
每个
case
后面的常量表达式的值必须互不相同,否则会导致互相矛盾的情况,也会造成语法错误。 -
case
后面的常量表达式只是起到标记语句的作用,并不是在该处进行判断。在执行switch
语句时,根据switch
后面表达式的值找到匹配的入口标记,然后从该标记处开始执行,不会再进行判断。 -
各个
case
和default
的出现顺序不影响执行结果。但从阅读的角度来看,最好按字母或数字的顺序编写case
语句。 -
当然,您也可以不写
default
语句,就像if...else
不要最后的else
语句一样。但最好还是加上default
,并在后面添加相关的代码。这样可以避免他人误以为您忘记处理default
的情况,同时也能提醒他人switch
到此结束。
注:
default
后面可以添加任意代码,但是冒号:
和分号;
不能省略,省略将导致语法错误。