IT兄弟连 Java语法教程 流程控制语句 分支结构语句5

Posted itxdl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IT兄弟连 Java语法教程 流程控制语句 分支结构语句5相关的知识,希望对你有一定的参考价值。

5  switch-case条件语句

Java中的第二种分支控制语句时switch语句,switch语句提供了多路支持,因此可以使程序在多个选项中进行选择。尽管一系列嵌套if语句可以执行多路测试,然而多数情况下使用switch则更为高效。其完整形式如下:

switch(expression)

    case constant1:

         statement sequence;

         break;

    case constan2:

         statement sequence;

         break;

    ...

    ...

    default:

         statement sequence;

对于JDK7之前的Java版本,switch表达式必须是byte、short、int、char类型或枚举。从JDK7开始,表达式也可以是String类型,这意味着当前版本的Java可以使用字符串控制switch。通常,控制switch的表达式只是变量,而不是较大的表达式。

case语句中指定的每个值必须是唯一的常量表达式(例如字面值),重复的case值是不允许的。每个值得类型必须与switch表达式的类型兼容。

如果没有与表达式的值相匹配的case常量,就执行default语句,default语句是可选的,如果没有该语句,那么当所有的匹配都不成功时,就不会发生任何动作。当找到一个匹配时,就执行与该匹配相关的语句,直到遇到break为止。对于default或最后一个case,则执行到switch语句的末尾。

例:下面的程序演示了switch语句:

public class SwitchDemo

    public static void main(String[] args)

         char score = ‘C‘;

         switch (score)

              case ‘A‘:

                   System.out.println("优秀");

                   break;

              case ‘B‘:

                   System.out.println("良好");

                   break;

              case ‘C‘:

                   System.out.println("中等");

                   break;

              case ‘D‘:

                   System.out.println("及格");

                   break;

              default:

                   System.out.println("不及格");

        

   

编译并运行这个程序,在控制台将显示如图8所示的信息。

技术图片

图8  SwitchDemo运行结果

通过运行结果可以看到,程序在控制台输出了“中”,这是完全正确的,字符表达式score的值为“C”,对应的结果为“中等”。

在case标签后的每个代码块后都有一条break语句,这是Java中的关键字,break语句有着极其重要的意义,Java的switch语句允许case后代码块中没有break语句,但是这种做法可能会引入一个陷阱。如果把上面程序中的break语句都注释掉,将看到以下结果:

public class SwitchDemo

    public static void main(String[] args)

         char score = ‘C‘;

         switch (score)

              case ‘A‘:

                   System.out.println("优秀");

              case ‘B‘:

                   System.out.println("良好");

              case ‘C‘:

                   System.out.println("中等");

              case ‘D‘:

                   System.out.println("及格");

              default:

                   System.out.println("不及格");

        

   

重新编译并运行这个程序,控制台向显示如图9所示的信息。

技术图片

图9  去掉break后SwitchDemo运行结果

 

这个运行结果看起来很奇怪,但这正是有switch语句运行流程决定的:switch语句会先求出expression表达式的值,然后拿这个表达式和case标签后的值进行比较,一旦遇到相等的值,程序就开始执行这个case标签后的代码,不再判断与后面case、default标签的条件是否匹配,除非遇到break才会结束。

JDK7增强了switch语句的功能,允许switch语句的控制表达式是java.lang.String类型的变量或表达式,但是只能是java.lang.String类型,不能是StringBuffer或者StringBuilder这两种字符串类型。

以上是关于IT兄弟连 Java语法教程 流程控制语句 分支结构语句5的主要内容,如果未能解决你的问题,请参考以下文章

IT兄弟连 Java语法教程 流程控制语句 分支结构语句4

IT兄弟连 Java语法教程 流程控制语句 分支结构语句3

IT兄弟连 Java语法教程 流程控制语句 分支结构语句2

IT兄弟连 Java语法教程 流程控制语句 控制循环结构2

IT兄弟连 Java语法教程 流程控制语句 控制循环结构1

IT兄弟连 Java语法教程 流程控制语句 经典案例