3.1.4 switch语句

3.1.4 switch语句

当要从多个分支中选择一个分支去执行时,虽然可以使用if嵌套语句,但是当程序嵌套太多时会造成程序的可读性差。Java提供了一种多分支的选择语句——switch语句,在switch语句中,根据表达式的值来执行多个操作中的一个。

它的一般格式如下:

img61

说明:

(1)对于switch语句中表达式值的数据类型可以是byte,char,short 和int,不允许使用浮点型和long类型。

(2)判定表达式的值与case语句后面的值是否相等,决定程序需要执行的分支。

(3)在每个case语句结束位置都有“break”关键字,其作用是当程序执行某个分支时,会执行整个程序块直到遇见“break”语句结束分支程序的执行;如果没有“break”语句,则程序会执行当前case语句后面的程序块以及后面的每一个分支后才离开switch语句。

(4)在switch语句中使用“default”,其作用是当表达式的值与每个case语句中对应的值都不相同时,执行default语句后面的语句块,这个语句可以省略。

【例3-5】从命令行输入一个整数n,当n的值为1、2、3、4时,求n的n次方值。

img62

程序运行结果为:

img63

【程序说明】

把字符串转换到其他类型如下:

img64

【例3-6】通过键盘输入星期,输出相应星期的英文单词。

在程序中声明了一个整型变量weekday,它的数值代表了星期几。这个程序显示了星期的名字,主要是根据星期的数值并且使用了switch语句。

img65

程序运行结果为:

img66

【程序说明】

(1)在程序中,weekday变量的值要与case后面的值进行比较,如果相等就执行相应的case语句后面提供的语句。

(2)每个case语句的结束都要执行一条break;语句。

(3)程序中提供的每一个case值必须是唯一的。

当然,你可以使用if语句来实现它:

img67

img68

决定使用if语句还是switch语句的关键主要是根据可读型以及其他因素。if语句可以在更大范围或者条件来决定,而switch只有根据单个整型变量来做决定。同时,提供给case语句的数值必须是单一的。另外一点是,switch语句在每个case之后有一个break语句。每个break语句终止了swtich语句,并且控制流程继续switch块之后的第一个语句。break语句是必须的,因为没有它,case语句就会失效,也就是说,没有break语句,控制流程按顺序执行case语句。