File tree Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Original file line number Diff line number Diff line change @@ -147,4 +147,4 @@ Java 7中,switch的参数可以是String类型了,这对我们来说是一
147
147
148
148
看到这个代码,你知道原来字符串的switch是通过`equals()`和`hashCode()`方法来实现的。**记住,switch中只能使用整型**,比如`byte`。`short`,`char`(ackii码是整型)以及`int`。还好`hashCode()`方法返回的是`int`,而不是`long`。通过这个很容易记住`hashCode`返回的是`int`这个事实。仔细看下可以发现,进行`switch`的实际是哈希值,然后通过使用equals方法比较进行安全检查,这个检查是必要的,因为哈希可能会发生碰撞。因此它的性能是不如使用枚举进行switch或者使用纯整数常量,但这也不是很差。因为Java编译器只增加了一个`equals`方法,如果你比较的是字符串字面量的话会非常快,比如”abc” ==”abc”。如果你把`hashCode()`方法的调用也考虑进来了,那么还会再多一次的调用开销,因为字符串一旦创建了,它就会把哈希值缓存起来。因此如果这个`switch`语句是用在一个循环里的,比如逐项处理某个值,或者游戏引擎循环地渲染屏幕,这里`hashCode()`方法的调用开销其实不会很大。
149
149
150
- 好,以上就是关于switch对整型、字符型、和字符串型的支持的实现方式,总结一下我们可以发现,** 其实swich只支持一种数据类型 ,那就是整型,其他数据类型都是转换成整型之后在使用switch的。**
150
+ 好,以上就是关于switch对整型、字符型、和字符串型的支持的实现方式,总结一下我们可以发现,** 其实switch只支持一种数据类型 ,那就是整型,其他数据类型都是转换成整型之后在使用switch的。**
You can’t perform that action at this time.
0 commit comments