java5前,switch(expr)中的expr只能是byte、short、char、int ===> 可以是包装类型吗 & 底层原理/字节码
java5后,由于引入枚举类型,expr也可以是枚举类型 ===> 底层原理/语法糖
java7开始,expr可以是字符串 ===> 语法糖
long型在各版本一直是不行的 ===> 为什么不行,实际C语言也不支持(当然C的各种类型如int本身没有规定固定长度),可能是考虑操作的通用性?比如32位机器上的64位long型可能很多情况下需要两次操作才能放入连续内存,并且没有寄存器能存放一个long型
Java中的 Switch 是如何支持 String 的?为什么不支持 long? - 知乎 (zhihu.com)
switch为什么只能用int,short,byte,char,而不能用long,String-CSDN社区
平均时间复杂度 - 简书 (jianshu.com)