一、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结果,来解决不同字符串哈希冲突的问题