Java中的switch语句——通过示例学习Java编程(8)

作者:CHAITANYA SINGH

来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=19

当我们在代码逻辑中有多个选项,而且需要为每个选项执行不同的任务时,我们可以使用switch case语句。

switch case语句的语法看上去如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
switch  (变量或整数表达式)
{
      case  constant:
      //Java code
      ;
      case  constant:
      //Java code
      ;
      default :
      //Java code
      ;
}

注:虽然在switch语句里面的case语句块里面的break语句不是必须要有的,但switch case语句通常还都需要和break语句放在一起使用。我们下面先看一个case语句块里面没有break语句会发生什么的例子,然后我们再进一步讨论如何将switch case和break合在一起使用。

一个简单的switch case实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public  class  SwitchCaseExample1 {
 
    public  static  void  main(String args[]){
      int  num= 2 ;
      switch (num+ 2 )
      {
         case  1 :
           System.out.println( "Case1: Value is: " +num);
         case  2 :
           System.out.println( "Case2: Value is: " +num);
         case  3 :
           System.out.println( "Case3: Value is: " +num);
         default :
           System.out.println( "Default: Value is: " +num);
       }
    }
}

输出:

1
Default: Value is:  2

 以上代码讲解:在switch后面的括号里面我放了一个表达式(num+2),你也可以只放一个变量,如switch(num)。我们看看switch后面的表达式:num+2,其中num值是2,表达式num+2的结果是4。由于在switch语句块里面的case语句里面只有case 1、case 2、case 3,没有case 4,所以程序就跳过了case 1到case 3的语句,直接执行了最下面的default(默认)语句。上面这个例子说明了在switch case语句中含有default语句的重要性,这样可以确保万一所有的case语句没有匹配到合适的,程序永远可以跳转到default(默认)的代码块去执行。

switch case流程图

switch-case语句的流程逻辑是先评估在switch后面的括号里面的表达式,然后根据这个表达式算出的结果,看看下面的case关键字后面的字符串有没有符合表达式的结果,如果有符合的,就跳到那个符合的case语句去执行,如果一个都没有匹配到,就跳到最下面的default语句去执行。

switch-case里面的break语句

虽然在switch case的代码块里面每一个case里面的break语句不是强制要求的,但几乎所有的switch case代码块里面都会有break语句。在我们讨论break语句之前,先看看下面这个不用switch case里面的break语句:

在switch case语句里面的break语句虽然是可选项,但实际上几乎每次在写switch case语句中都会用到它。在我们讨论break语句之前,我们先看一个没有用到break语句的switch case的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public  class  SwitchCaseExample2 {
 
    public  static  void  main(String args[]){
       int  i= 2 ;
       switch (i)
       {
          case  1 :
            System.out.println( "Case1 " );
          case  2 :
            System.out.println( "Case2 " );
          case  3 :
            System.out.println( "Case3 " );
          case  4 :
            System.out.println( "Case4 " );
          default :
            System.out.println( "Default " );
       }
    }
}

输出:

1
2
3
4
Case2 
Case3 
Case4 
Default

注意:在上面这个例子里,我们把整数值2赋值给变量i,然后把变量i放到switch后面的括号里面,也就是把整数值2放到switch后面的括号里面,所以当程序执行到语句switch(i)的时候,程序会直接跳到case 2,直接执行case 2下面的语句:System.out.println("Case");,在执行完这个语句后,因为接着的语句中没有break语句,程序继续执行下面的语句,case 3、case 4和default后面的语句,所以在屏幕上会打印出Case2、Case3、Case4和Default四行字,表示这四个语句都执行了。如果我们在执行完case 2后面的语句后,不希望执行case 3和case 4以及default后面的语句,我们可以在这些语句中加上break语句。

当我们希望我们的逻辑流程跳出switch代码块时,就可以用上break语句。每当程序执行到break语句时,都会忽略后面的case语句,直接跳出switch后面的代码块。

我们再看一个例子,这个例子和上面的例子差不多,只是多了break语句。

带break语句的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public  class  SwitchCaseExample2 {
 
    public  static  void  main(String args[]){
       int  i= 2 ;
       switch (i)
       {
          case  1 :
            System.out.println( "Case1 " );
            break ;
          case  2 :
            System.out.println( "Case2 " );
            break ;
          case  3 :
            System.out.println( "Case3 " );
            break ;
          case  4 :
            System.out.println( "Case4 " );
            break ;
          default :
            System.out.println( "Default " );
       }
    }
}

输出:

1
Case2

从这个输出结果可以看出,程序只运行了case 2后面的代码(打印出文字“Case2”),其余的case 3、case 4和default后面的代码都跳过了,没有执行。

为什么在default语句块里面没有用到break语句?

当程序执行到default语句块后,程序本来就会跳出switch代码块,所以在这里加上break语句完全是画蛇添足,没有必要。

使用switch case语句要注意的几个点:

1)case后面的值不一定要是1、2、3之类的顺序数值。如果case后面的数值是一个整数,那么这个数值可以是任何整数,而且也不一定要按照从小到大的顺序排下来。

2)case后面的值也可以是字符或字符串,具体用法见下面的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public  class  SwitchCaseExample2 {
 
    public  static  void  main(String args[]){
       char  ch= 'b' ;
       switch (ch)
       {
          case  'd' :
            System.out.println( "Case1 " );
            break ;
          case  'b' :
            System.out.println( "Case2 " );
            break ;
          case  'x' :
            System.out.println( "Case3 " );
            break ;
          case  'y' :
            System.out.println( "Case4 " );
            break ;
          default :
            System.out.println( "Default " );
       }
    }
}

3)如果在switch后面的括号里面是一个表达式,那么这个表达式的结果一定要是一个常量,例如:

有效的表达式:

1
2
switch ( 1 + 2 + 23 )
switch ( 1 * 2 + 3 % 4 )

无效的表达式:

1
2
switch (ab+cd)
switch (a+b+c)

4)在switch语句里面可以嵌入switch语句,但这种做法要尽量避免,因为这会让程序看上去更复杂,更难读懂。

 

转载于:https://www.cnblogs.com/lea1941/p/10855332.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值