一、switch支持类型
1、java7以前,switch支持:int、short、byte、char
2、java7及之后版本,增加String类型的支持
二、Demo
1、源码
public class MyTest {
public static void main(String [] args) {
String str = "a";
testSwitchString(str);
}
private static void testSwitchString(String str) {
switch (str) {
case "a":
System.out.println("1");
break;
case "b":
System.out.println("2");
break;
default:
System.out.println("3");
}
}
}
2、编译后
public class MyTest {
public MyTest() {
}
public static void main(String[] args) {
String str = "a";
testSwitchString(str);
}
private static void testSwitchString(String str) {
byte var2 = -1;
switch(str.hashCode()) {
case 97:
if(str.equals("a")) {
var2 = 0;
}
break;
case 98:
if(str.equals("b")) {
var2 = 1;
}
}
switch(var2) {
case 0:
System.out.println("1");
break;
case 1:
System.out.println("2");
break;
default:
System.out.println("3");
}
}
}
三、结论
1、switch支持String,实际上是通过java语法糖,将字符串的比较转换为对哈希值的比较
2、哈希值相等,在比较两个字符串equals结果,来解决不同字符串哈希冲突的问题