Java中理解的开关分支语句

  <强>在程序中遇到多分支选择的时候,想必大家都喜欢用如果……else if…还有…语句,尤其是初学者,因为在了解开关语句之前,我也是只会用其他如果……语句。那么现在看完这篇随笔的介绍后,你们又有了另外一种选择,使用开关语句可以增强代码的可能性,当然开关也不是随随便便就能用的,它也有语法规则的约束。   
     <强>前言:   

在程序中遇到多分支选择的时候,想必大家都喜欢用如果……else if…还有…语句,尤其是初学者,因为在了解开关语句之前,我也是只会用其他如果……语句。那么现在看完这篇随笔的介绍后,你们又有了另外一种选择,使用开关语句可以增强代码的可能性,当然开关也不是随随便便就能用的,它也有语法规则的约束,请看下面的阐述。

     <强>一、开关简介和语法   

开关语句用于多分支选择,由一个控制表达式和多个案例标签组成.switch语句后面的控制表达式的数据类型只能是字节,短,char, int,字符串和枚举类型,不能是其它类型。

  

开关语句往往需要在案例标签后紧跟一个代码块,案例标签作为这个代码块的标识。

  

开关语句的语法如下:

  <>之前,开关(expr) {   ,case  condition1 {   ,//代码块……   ,打破;   ,}   ,case  condition2 {   ,//代码块……   ,打破;   ,}   ,……   ,case  conditionN {   ,//代码块……   ,打破;   ,}   ,dafault: {   ,//代码块……   ,}   }   

这种分支语句的执行是先对expr求值,然后依次匹配每个案例标签后的条件值,遇到匹配的值即执行对应的代码块,如果条件的值没有与expr表达式的值相等,则执行默认标签后的代码块。

     <强>二、开关语句和如果语句的区别   如果语

开关语句和句都可用于分支条件的选择,但开关后面的控制表达式只能是字节,短,char, int,字符串和枚举类型,不能是布尔类型,如果后面的控制表达式是布尔类型;开关语句中各个案例标签后代码块的开始点和结束点非常清晰,因此完全可以省略例后代码块的花括号。

     <强>三、开关的使用及注意事项   

为了更清晰的认识开关、下面通过一段程序来示范开关的用法:

  <>之前,public  class  TestSwitch  {   ,public  static  void  main (String [], args), {   ,//声明变量languageType   ,String  languageType =,“Java";   ,//执行开关语句   ,switch  (languageType), {   ,case “C":   ,System.out.println (“C语言“);   ,打破;   ,case “Java":   ,System.out.println (“Java语言“);   ,打破;   ,case “c++”:   ,System.out.println (“c++语言“);   ,打破;   ,case “Python":   ,System.out.println (“Python语言“);   ,打破;   ,默认值:   ,System.out.println(“语言类型输入错误“);   ,}   ,}   }   

运行上面的程序输出:Java语言。

  

因为定义的变量(开关后面的控制表达式)“languageType"与“Java"匹配。

  

如果把上面程序中的每个案例标签里的打破语句去掉,将会发生什么样的结果呢?那么我先把每个打破语句注释掉,运行结果如下:

  

Java语言c++语言Python语言语言类型输入错误

  

输出结果是不是很奇怪!这正是开关语句的运行流程决定的,只要进入开关语句的入口,程序会一直运行下去,直到遇到打破语句,如果省略了打破语句,那么匹配例值后的所有情况(包括默认)都会被执行。

  

所以,使用开关语句时,有两个值得注意的地方:

  

1)开关后面的控制表达式只能是字节,短,char, int,字符串和枚举类型;

  

2)如果省略了情况后的代码块破裂,将会引入一个陷阱。

  

原文地址:   https://www.linuxprobe.com/java-switch-if.html

Java中理解的开关分支语句