可以明确的是,在jdk1.5之前,switch中只能使用整数表达式:char、byte、short、int;(包括包装类:Character、Byte、Short、Integer)
而jdk1.5,可以使用枚举类型enum;jdk1.7,可以使用String类型;
为什么不能使用long?
像char、byte、short都可以自动转为int类型,而不丢失精度;但long不行,long强转为int后会丢失精度,导致值不正确。
对于枚举类型:
public class Test1 {
private enum Color {
yellow, red, green
}
public static void main(String[] args) {
Color mc = Color.red;
switch (mc) {
case yellow:
System.out.println(Color.yellow);
break;
case red:
System.out.println(Color.red);
break;
case green:
System.out.println(Color.green);
break;
default:
System.out.println("default");
}
}
}
对于String类型:
public static void main(String[] args) {
String mc = "red";
switch (mc) {
case "yellow":
System.out.println("yellow");
break;
case "red":
System.out.println("red");
break;
case "green":
System.out.println("green");
break;
default:
System.out.println("default");
}
}