在jdk7之前的switch只能使用byte short int char enum.一旦使用了
String value = "Hello";
switch(value){
case "Hello" :
System.out.println("Hello");
break;
case "hh" :
System.out.println("hh");
break;
case "h" :
System.out.println("h");
break;
default :
System.out.println("default");
}
就會有
HelloWorld.java:12: 不相容的類型
找到: java.lang.String
需要: int
switch(value){
在jdk7中,你完全可以大膽的使用.對應的java編譯成class其實是
String value = "Hello";
String str = value;
int i = -1;
switch (str.hashCode())
{
case "Hello".hashCode():
if (str.equals("Hello")) i = 0; break;
case "hh".hashCode() :
if (str.equals("hh")) i = 1; break;
case "h".hashCode() :
if (str.equals("h")) i = 2;
}
switch (i)
{
case 0:
System.out.println("Hello");
break;
case 1:
System.out.println("hh");
break;
case 2:
System.out.println("h");
break;
default:
System.out.println("default");
}
由上面的例子我們可以看出是產生了兩個swtich語句,把String 轉成對應的hashCode值放入
第一個switch語句中.定義了一個變數i,值從-1開始.把結果放到第二個switch語句中.