swtich选择结构(支持String原理解析)

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("未知等级");
      }

猜你喜欢

转载自www.cnblogs.com/yyKing/p/13397066.html
今日推荐