jdk1.7开始switch支持字符串作为条件判断,其实是个语法糖,实际为字符串获取hashcode后再去判断。
源码:
public static void a(String... ss) {
switch (ss[0]) {
case "a":
System.out.println(1);
case "*" :
System.out.println(2);
case "zcb" :
System.out.println(3);
case "中" :
System.out.println(4);
}
}
class反编译;
public static void a(String... ss) {
label33 : {
label32 : {
String arg0;
switch ((arg0 = ss[0]).hashCode()) {
case 42 :
if (!arg0.equals("*")) {
return;
}
break;
case 97 :
if (!arg0.equals("a")) {
return;
}
System.out.println(1);
break;
case 20013 :
if (!arg0.equals("中")) {
return;
}
break label33;
case 120409 :
if (!arg0.equals("zcb")) {
return;
}
break label32;
default :
return;
}
System.out.println(2);
}
System.out.println(3);
}
System.out.println(4);
}