Java switch 语句支持的数据类型

对于表达式 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){

        }
    }
}

编译器会给出提示

image.png

你可能感兴趣的:(Java switch 语句支持的数据类型)