java-switch常见问题
java switch支持byte、short、int类型,在jdk1.5时,支持了枚举类型,在jdk1.7时,又支持了string类型
为什么不支持long?
switch底层是使用int类型来进行判断的,即使是枚举、string类型,最终也是转变成int类型。由于long型表示范围大于int型,因此不支持long类型
枚举类型是如何变成int类型的?
在switch语句中,是根据枚举元素在枚举中的序号类转变成int的
枚举元素在数组中的下标由ordinal()函数决定,该方法就是返回元素在枚举类中的序号
string类型是如何变成int类型的?
首先要知道char是如何变成int的,是ASCII码
对于string来说,利用的就是hashCode函数了,但是两个不同的字符串hashCode是有可能相等的,这时候就得靠equals函数了
包装类可以吗?
是支持包装类型的,通过自动拆箱解决
如果传入参数是null,则会报空指针