swtich选择结构(支持String原理解析)
支持类型
byte,short,int,char,String(jdk7后支持)
jdk7之后支持String的原理解析
//java源码
String name="yyKing";
//jdk7 之后才支持String类型比较
switch (name)
{
case "yyKing":
System.out.println("King");
break;
case "yyHandsome":
System.out.println("Handsome");
break;
case "yySmart":
System.out.println("Smart");
break;
default:
System.out.println("未知等级");
}
//编译过后的
//其本质是做了两次swtich,第一次switch 用了name的hash值作比较,相同之后用equals作比较,之后转化为值类型在用swtich之间的比较
String name = "yyKing";
byte var4 = -1;
switch(name.hashCode()) {
case -1895024349:
if (name.equals("yyHandsome")) {
var4 = 1;
}
break;
case -737080695:
if (name.equals("yySmart")) {
var4 = 2;
}
break;
case -716755241:
if (name.equals("yyKing")) {
var4 = 0;
}
}
switch(var4) {
case 0:
System.out.println("King");
break;
case 1:
System.out.println("Handsome");
break;
case 2:
System.out.println("Smart");
break;
default:
System.out.println("未知等级");
}