Java中Switch支持byte、short、char、int四种基本类型,在JDK1.5中支持了枚举类型以及byte、short、char、int四种基本数据类型的包装类,在JDK1.7中支持了String类型,不支持long类型以及long的包装类。
一、底层实现
java中switch是将所有类型转换成int类型来进行判断。关于long,因为long类型表示的范围大于int类型,所以无法进行转换,因此switch不支持long类型
二、基本类型以及其包装类转换成int类型
基本类型都为强转,char类型为取ascll码,包装类强转前有个自动拆装箱的操作。
三、枚举类转换成int类型
在switch中枚举类型的int值为枚举元素在枚举类中的序号。
四、String类型转换成int类型
对于String来说其int值即为String类的哈希值,即利用hashCode()函数,考虑到哈希值相等的情况,底层中加入了equals()函数。