在Java 7 以后,switch
语句可以用作String类型上。
从本质来讲,switch
对字符串的支持,其实也是int类型值的匹配。它的实现原理如下:
通过对case
后面的String对象调用hashCode(
)方法,得到一个int类型的Hash值,然后用这个Hash值来唯一标识着这个case
。
那么当匹配的时候,首先调用这个字符串的hashCode()
方法,获取一个Hash值(int类型),用这个Hash值来匹配所有的case
,
如果没有匹配成功,说明不存在;如果匹配成功了,接着会调用字符串的equals()
方法进行匹配。
由此看出,String变量不能是null;同时,switch
的case
子句中使用的字符串也不能为null。