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!