在 Java 5 以前,switch(expr)中,expr只能时int或这能转化为int型的byte,short,char。
从 Java 5 开始,Java中引入了枚举类型,expr 也可以是 enum 类型。
从 Java 7 开始,expr 还可以是字符串(String)
●switch可作用于char byte short int
●switch可作用于char byte short int对应的包装类
●switch不可作用于long double float boolean ,包括他们的包装类
●switch中可以是字符串类型,String(JDK1.7之后才可以作用在string上)
●switch中可以是枚举类型(JDK1.5之后)
在 switch( expr1)中, expr1 只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是 int基本类型或 Integer 包装类型,由于, byte,short,char 都可以隐含转换为 int,所以,这些类型以及这些类型的包装类型也是可以的。
显然, long 和 String 类型都不符合 switch 的语法规定,并且不能被隐式转换成 int类型,所以,它们不能作用于 swtich 语句中。
另外由于 JDK1.7 中引入新特性,所以 swtich 语句可以接收一个 String 类型的值, String 可以作用在 swtich 上。