switch 用法解读
switch case 判断表达式的一种,类似于 if else
switch() 方法支持数据类型:JDK1.6(char,byte,short,int),JDK1.7(char, byte,short,int, String)
case 表达式可以有多个 类似于 else if
switch case 用法限制
- 每个case语句要通过break/return结束语句
- 最后一个分支要是用default 结束switch 语句
- 支持多个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, 默认情况下会继续执行以下命令行
本文地址:https://blog.csdn.net/u014614478/article/details/109263395