switch 语句将从与选项值相匹配的 case 标签开始执行,直到遇到 break 语句,或者执行到 switch 语句的结束处为止。如果没有相匹配的 case 标签,而有 default 子句,就执行这个子句。
下面是一个 switch 的例子:
Scanner in = new Scanner(System.in);
System.out.println("请输入 1、2、3、4 !");
int choice = in.nextInt();
switch(choice) {
case 1:
System.out.println("输入的值为: " + choice);
break;
case 2:
System.out.println("输入的值为: " + choice);
break;
case 3:
System.out.println("输入的值为: " + choice);
break;
case 4:
System.out.println("输入的值为: " + choice);
break;
default:
System.out.println("bad input");
break;
}
有可能触发多个 case 分支。如果在 case 分支语句的末尾没有 break 语句,那么就会接着执行下一个 case 分支语句。这种情况相当危险,常常会引发错误。为此,我们在程序中从不使用 switch 语句。
如果你比我们更喜欢 switch 语句,编译代码时可以考虑加上 -Xlint:fallthrough 选项,如下所示:
javac -Xlint:fallthrough Test.java
这样以来,如果某个分支最后缺少一个 break 语句,编译器就会给出一个警告消息。
如果你确定正是想使用这种“直通式”(fallthrough)行为,可以为其外围方法加上一个标注 @SuppressWarnings("fallthrough")。这样就不会对这个方法生成警告了。(注解是为编译器或处理 Java 源文件或类文件的工具提供信息的一种机制。)
case 标签可以是:
当在 switch 语句中使用枚举常量时,不必在每个标签中指明枚举名,可以由 switch 的表达式值推导得出。例如:
enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};
Size sz = Size.SMALL;
switch (sz)
{
case SMALL: // 不需要使用 Size.SMALL
...
break;
...
}
Java switch 多重选择语句(学习 Java 编程语言)
原文:https://blog.51cto.com/12185106/2581439