在jdk1.7以后, switch() 中的变量类型只能为 string,int,short,byte,char,Integer,Character,enum 类型,其他类型运行会报错.
switch case语句基本格式为:
switch(变量){
case 变量值1:
//逻辑
break;
case 变量值2:
//逻辑
break;
...
case 变量值n:
//逻辑
break;
default:
//逻辑
break;
}
执行过程分为几种情况:
情况一:
int i = 1;
switch (i) {
case 0:
System.out.println("i = 0");
break;
case 1:
System.out.println("i = 1");
break;
case 2:
System.out.println("i = 2");
break;
default:
System.out.println("i 值未确定");
break;
}
当含有 break 且 case值 找到, run: i = 1 --- 若未找到 run : i 值未确定 ,既执行 default 语句.
情况二:
int i = 1;
switch (i) {
case 0:
System.out.println("i = 0");
case 1:
System.out.println("i = 1");
case 2:
System.out.println("i = 2");
default:
System.out.println("i 值未确定");
}
当不含有 break 时,若 case值 找到,从当前 case 语句开始,返回所有 case 语句, run: i =1 i= 2 i 值未确定. --- 若为找到,则只执行 default 语句,run: i 值未确定.
当判断条件为很多个时,相对 if 语句而言,如果能使用 switch case,更推荐使用switch case语句.
下面为使用 enum 的一种方式
public class YoonaLt {
enum Car {
Lamborghini(900), Audi(400), Porsche(700);
private int price;
Car(int p) {
price = p;
}
int getPrice() {
return this.price;
}
}
public static void main(String[] args) {
for (Car c : Car.values()) {
switch (c.getPrice()) {
case 900:
System.out.println("you choose Lamborghini");
break;
case 400:
System.out.println("you choose Audi");
break;
case 700:
System.out.println("you choose Porsche");
break;
default:
System.out.println("you not choose anyCar");
break;
}
}
}
}