Java switch 多重选择语句(学习 Java 编程语言 020)

在处理多个选项时,使用 if/else 结构显得有些笨拙。Java 有一个 switch 语句。java

switch 语句将从与选项值相匹配的 case 标签开始执行,直到遇到 break 语句,或者执行到 switch 语句的结束处为止。若是没有相匹配的 case 标签,而有 default 子句,就执行这个子句。ide

下面是一个 switch 的例子:工具

Scanner in = new Scanner(System.in);
System.out.println("请输入 一、二、三、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;
}

switch 语句的流程图

有可能触发多个 case 分支。若是在 case 分支语句的末尾没有 break 语句,那么就会接着执行下一个 case 分支语句。这种状况至关危险,经常会引起错误。为此,咱们在程序中从不使用 switch 语句。
若是你比咱们更喜欢 switch 语句,编译代码时能够考虑加上 -Xlint:fallthrough 选项,以下所示:
javac -Xlint:fallthrough Test.java
这样以来,若是某个分支最后缺乏一个 break 语句,编译器就会给出一个警告消息。
若是你肯定正是想使用这种“直通式”(fallthrough)行为,能够为其外围方法加上一个标注 @SuppressWarnings("fallthrough")。这样就不会对这个方法生成警告了。(注解是为编译器或处理 Java 源文件或类文件的工具提供信息的一种机制。)code

case 标签能够是:blog

  • 类型为 char、byte、short 或 int 的常量表达式。
  • 从 Java 7 开始,case 标签还能够是字符串字面量。
  • 枚举常量。

当在 switch 语句中使用枚举常量时,没必要在每一个标签中指明枚举名,能够由 switch 的表达式值推导得出。例如:
enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};字符串

Size sz = Size.SMALL;
switch (sz)
{
    case SMALL: // 不须要使用 Size.SMALL
        ...
        break;
    ...
}
相关文章
相关标签/搜索