Java 使用 switch 语句和枚举类型 注意点一 注意点二 注意点三

Java 使用 switch 语句和枚举类型
注意点一
注意点二
注意点三

switch 语句包被划分为一种选择语句。根据整数表达的值,进行选择操作。语句基本格式如下:

switch (interal-selector) {
            case integral-value1: statement; break;
            case integral-value2: statement; break;
            case integral-value3: statement; break;
            case integral-value4: statement; break;
            case integral-value5: statement; break;
            default: statement;
        }

注意点如下:

  1. interal-selector 即为整数表达式的值,他的意思是 interal-selector 本身是一个整数,或者经过运算之后产生一个整数。
  2. break 是可选的,如果没有 break 则语句会继续执行,直到遇到 break 或者运行到结尾
  3. default 表示在没有匹配的情况下默认执行的语句,由于已经是最后执行的所以不需要 break 语句,但是如果想写也可以

interal-selector (或成为选择银子)需为整数表达式。很容易理解,整数表达式可以是 int 以及 int 的分装类 Integer。 同时由于, byte,short,char都可以隐含地转换成 int,所以他们也可以作为选择因子。

而float,double,long,String 则同理不可作为选择因子。

注意点二

JavaSE5 中引入新特性枚举类型,可以减弱这种限制。

创建一个枚举类型

public enum Season {
    Spring,Summer,Autumn,Winter
}

枚举类型作为选择因子

public class MainTest {

    Season season;

    public MainTest(Season season) {
        this.season = season;
    }

    public void describe() {

        switch (season) {
        case Spring:
            System.out.println("Today is" + " " + season);
            break;
        case Summer:
            System.out.println("Today is" + " " + season);
            break;
        case Autumn:
            System.out.println("Today is" + " " + season);
            break;
        case Winter:
            System.out.println("Today is" + " " + season);
            break;
        default:
            System.out.println("The end of the world ");
        }


    }

    public static void main(String[] args) {
        MainTest spring = new MainTest(Season.Spring);
        MainTest summer = new MainTest(Season.Summer);

        spring.describe();
        summer.describe();
    }
}

switch 语句需要在有限的可能集合中进行选择,而 enum 则是我们自己创建的可能集合。

绝配!

注意点三

从JDK 7开始, 我们可以针对字符串使用switch条件语句了;在JDK 6或者之前的版本,我们则不能使用针对字符串的switch条件语句。

switch (season) {
            case "aa":
                System.out.println("Today is" + " " + season);
                break;
            case "bb":
                System.out.println("Today is" + " " + season);
                break;
            case "cc":
                System.out.println("Today is" + " " + season);
                break;
            default:
                System.out.println("The end of the world ");
        }