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, 默认情况下会继续执行以下命令行


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部