Java中switch支持的数据类型
前言
总体来说,可以认为switch中case只支持int类型
JDK1.5之前
仅支持4种:
- byte
 - short
 - char
 - int
 
JDK1.5之后1.7之前
支持5种:
- byte(以及包装类)
 - short(以及包装类)
 - char(以及包装类)
 - int(以及包装类)
 - enum
 
对四个包装类的支持是因为java编译器在底层手动进行拆箱
对枚举类的支持是因为枚举类有一个
ordinal方法,该方法实际上是一个int类型的数值
JDK1.7之后
支持6种:
- byte(以及包装类)
 - short(以及包装类)
 - char(以及包装类)
 - int(以及包装类)
 - enum
 - String
 
实际上
String类型有一个hashCode算法,结果也是int类型
扩展
switch的所有逻辑都可以用if...else...来实现,那如何选择switch和if...else呢?
判断的结果是常量的情况下可以选择
switch也可以选择if...else...但如果条件是判断大小,比如
if (a > b) {...}那这种情况,
switch实现起来就很难,因为case的值是常量。这个时候用if...else...如果分支特别多,建议用switch
唯一好处是容易读懂,这样对于以后维护代码是有很大好处的,至少看代码不费劲,但是分至少,比如三四个,那就用
if...else...好了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 YD Blog!