对于表达式 switch(expr)
-
在Java5以前,exper只能是byte,short,char,int类型
byte、short、char类型可以在不损失精度的情况下向上转型成int类型。 -
从Java5开始,java中引入了枚举类型(enum类型)和byte,short,char,int的包装类
四个包装类的支持是因为java编译器在底层进行了拆箱操作;
枚举类型的支持是因为枚举类有一个ordinal方法,该方法实际上是返回一个int类型的数值。 -
从Java7开始,exper还可以是String类型
String类中因为有一个hashCode方法,结果也是返回int类型。
所以得出的结论是,switch在底层实现目前只支持整型数据。
具体分析Java中字符串String Switch的实现原理
简单验证
//jdk1.8.0_66 环境
public class MyClass {
private static long aLong;
public static void main(String[] args){
switch (aLong){
}
}
}
编译器会给出提示

网友评论