能在 Switch 中使用 String 吗?

发布时间 2023-07-28 14:29:38作者: 我来偷家了

从 Java 7 开始,我们可以在 switch case 中使用字符串,但这仅仅是一个语法糖。内部实现在 switch 中使用字符串的 hash code。

 

 

 

在Java 7中,switch开始支持String类型。

 

从本质来讲,switch对字符串的支持,其实是int类型值得匹配。

 

其实现原理为:通过对case后面的String对象调用hashCode()方法,得到一个int类型的hash值,然后用这个hash值来唯一标识这个case。

如果匹配,接着会调用字符串的String.equals()方法进行匹配,如果没有匹配成功,说明不存在。

 

String变量不能为null,同时,switch的case子句中使用的字符串也不能为null。

使用switch语句时,String类型的参数必须是非空的。

如果fruitnull,则会引发NullPointerException

因此,在使用switch语句之前,请确保参数不为null,或者在使用switch之前添加适当的空值检查。