java switch-case
switch(表达式)
- 表达式:
- 可以是byte,short,int,char
- JDK5以后可以是枚举
- JDK7以后可以是字符串
- case B:C
- B的取值只能是常量
- C不需要用大括号包裹着
- 多个case中的值不能相同,所以B必须是一个常量
- default可以放在任意位置(但执行结果可能会不同,见以下代码)
String opStr = "DIV";
switch (OpCodeEnum.matchOpCode(opStr)) {
default :
System.out.println("减法");
break;
case MUL:
System.out.println("乘法");
break;
case DIV:
System.out.println("除法");
break; // 此处不管有没有break,都只打印了 "除法"
}
- 有break时,打印结果是 "除法"
- 没有break时,打印结果还是是 "除法"
调换位置后:
String opStr = "DIV";
switch (OpCodeEnum.matchOpCode(opStr)) {
case MUL:
System.out.println("乘法");
break;
case DIV:
System.out.println("除法");
default :
System.out.println("减法");
break;
}
打印出的是:
"除法"
"减法"
default的顺序结论:
- 当case没有符合条件时,跟default的顺序无关(都会执行default语句)
- 当case有符合条件且没有break时,跟default的顺序有关(是否执行default语句)
网友评论