switch 用法解读

 

switch case  判断表达式的一种,类似于 if else

switch() 方法支持数据类型:JDK1.6(char,byte,short,int),JDK1.7(char, byte,short,int, String)

case 表达式可以有多个 类似于 else if

switch case 用法限制

  1. 每个case语句要通过break/return结束语句
  2. 最后一个分支要是用default 结束switch 语句
  3. 支持多个case分支,执行一个判定逻辑

switch case 错误用法解析

error code 1. case 表达式执行结束没有 break/return 结束

public static void swithcTest(int a){
   
switch(a){
       
case 1:
            System.out.println(
1);
       
case 2:
            System.out.println(
2);
       
case 3:
            System.out.println(
3);
    }

}

//运行方法

swithcTest(2);
//打印执行结果

2

3

期望结果打印2完成结束语句,但是程序未结束,并且执行 case 3 表达式

Javap -c xxxx.class

switch case 2 表达式执行完成后,没有结束,继续执行 case 3 表达式,执行后return 结束语句 

正确写法

public static void swithcTestReturn(int a){

    switch(a){

        case 1:

            System.out.println(1);

            return;

        case 2:

            System.out.println(2);

            return;

        case 3:

            System.out.println(3);

            return;

        default:

            System.out.println(4);

            return;

    }

}

 

//运行方法

swithcTest(2);
//打印执行结果
2

Javap -c xxxx.class

 

 

当 switch case 2 表达式执行完成,return 结束语句

 

error code 2. default 使用位置错误

public static void swithcTestDefault(int a){

    switch(a){

        case 1:

            System.out.println(1);

            return;

        default:

            System.out.println(4);

        case 2:

            System.out.println(2);

            return;

        case 3:

            System.out.println(3);

            return;

    }

}

 

//运行方法

swithcTestDefault(4);
//打印执行结果
4
2

期望结果打印4完成结束语句,但是程序未结束,并且执行 case 2 表达式后,return结束

Javap -c xxxx.class

 

 

default:36 代码命令行至50行  (46-50行属于case 2 表达式的命令行)

default默认表达式没有在43行执行后 break/return结束,继续往下执行 case 2 表达式

执行到50行时return结束,所以打印结果 4  2

正确写法

public static void swithcTestReturn(int a){

    switch(a){

        case 1:

            System.out.println(1);

            return;

        case 2:

            System.out.println(2);

            return;

        case 3:

            System.out.println(3);

            return;

        default:

            System.out.println(4);

            return;

    }

}

//运行方法

swithcTestDefault(4);
//打印执行结果
4

if else 案例编码:

public static void ifTest(int a){
   
if(a>1){
       
System.out.println(1);
    }
else if(a>2){
       
System.out.println(2);
    }
else {
       
System.out.println(a);
    }
}

javap -c xxxx.calss

 

总结:if  else 的每个分支执行完成后,会执行goto 结束语句 ,switch case 如果没有写break/return, 默认情况下会继续执行以下命令行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值