“二哥,今天我们来学习‘switch 语句’,对吧?”
“是的,三妹。Java 中的 switch 语句用来判断变量与多个值之间的相等性。变量的类型可以是 byte、short、int、long,或者对应的包装器类型 Byte、Short、Integer、Long,以及字符串和枚举。”
来看一下 switch 语句的格式:
switch(变量) {
case 可选值1:
// 可选值1匹配后执行的代码;
break; // 该关键字是可选项
case 可选值2:
// 可选值2匹配后执行的代码;
break; // 该关键字是可选项
......
default: // 该关键字是可选项
// 所有可选值都不匹配后执行的代码
}
变量可以有 1 个或者 N 个值。
值类型必须和变量类型是一致的,并且值是确定的。
值必须是唯一的,不能重复,否则编译会出错。
break 关键字是可选的,如果没有,则执行下一个 case,如果有,则跳出 switch 语句。
default 关键字也是可选的。
画个流程图:
来个示例:
public class Switch1 { public static void main(String[] args) { int age = 20; switch (age) { case 20 : System.out.println("上学"); break; case 24 : System.out.println("苏州工作"); break; case 30 : System.out.println("洛阳工作"); break; default: System.out.println("未知"); break; // 可省略 } } }
输出:
上学
当两个值要执行的代码相同时,可以把要执行的代码写在下一个 case 语句中,而上一个 case 语句中什么也没有,来看一下示例:
public class Switch2 { public static void main(String[] args) { String name = "沉默王二"; switch (name) { case "詹姆斯": System.out.println("篮球运动员"); break; case "穆里尼奥": System.out.println("足球教练"); break; case "沉默王二": case "沉默王三": System.out.println("乒乓球爱好者"); break; default: throw new IllegalArgumentException( "名字没有匹配项"); } } }
输出:
乒乓球爱好者
1
枚举作为 switch 语句的变量也很常见,来看例子:
public class SwitchEnumDemo { public enum PlayerTypes { TENNIS, FOOTBALL, BASKETBALL, UNKNOWN } public static void main(String[] args) { System.out.println(createPlayer(PlayerTypes.BASKETBALL)); } private static String createPlayer(PlayerTypes playerType) { switch (playerType) { case TENNIS: return "网球运动员费德勒"; case FOOTBALL: return "足球运动员C罗"; case BASKETBALL: return "篮球运动员詹姆斯"; case UNKNOWN: throw new IllegalArgumentException("未知"); default: throw new IllegalArgumentException( "运动员类型: " + playerType); } } }
输出:
篮球运动员詹姆斯