Switch String
[TOC]
对String的处理
java 7 才开始支持Switch String,实现方式是根据String的hashCode将String映射到一个byte上面,再采用switch byte的方式给予支持。
虽然本例是将
String映射到了byte,但不难相像如果Switch分支过多的话,会映射到int。
String str = "\"_";
final String s1 = "\"_";
final String s2 = "!~";
final String s3 = "hello";
/**
* s1 和 s2 有相同的 hashCode
*/
switch (str) {
case s1:
System.out.println(s1);
break;
case s2:
System.out.println(s2);
break;
case s3:
System.out.println(s3);
break;
default:
System.out.println("default");
break;
}
要明确几点
-
switch不支持long -
switch中的case var:var必须是常量

Java中的Switch String本质