switch (表达式){
case 常量1:
// 代码块1;
break;
case 常量2:
// 代码块2;
break;
default:
// 代码块n;
break;
}关键字说明
switch:表示条件表达式,括号里的值是一个规定数据类型的值。
case:表示条件分支,case后面跟一个常量,每个case后面的值必须不一样。case的个数可以为0个。
default:表示默认分支,default可以省略,通常放在最后。
break:表示“停止”,跳出当前switch语句。
switch支持的数据类型
switch()括号中的表达式的结果的类型只能是特定类型,我们将一个double类型的变量放入,发现编译报错:Cannot switch on a value of type double. Only convertible int values, strings or enum variables are permitted。
不难看出这里括号中只支持是int,String,enum型的。
由于java中的类型的自动转型,byte、char、short这三种可以自动转换为int型的类型括号中也支持。
由于java中包装类的自动拆箱,Integer、Byte、Char、Short这四种类型括号中也支持。
总结来说:switch()括号中的表达式支持int、String、enum以及可以自动转型为int的其他类型。
注意
在Java1.6中表达式的类型只能为int和enum,在java1.7后支持了对String的判断,String类型比较特殊。
public class Main {
public static void main(String[] args) {
char grade = 'C';
switch(grade)
{
case 'A' :
System.out.println("优秀");
break;
case 'B' :
case 'C' :
System.out.println("良好");
break;
case 'D' :
System.out.println("及格");
case 'F' :
System.out.println("你需要再努力努力");
break;
default :
System.out.println("未知等级");
}
System.out.println("你的等级是 " + grade);
}
}执行结果为:
良好 你的等级是 C
说通俗一点就是当前的值,与下面的几个值对比,如果相同的,就执行当前的case,如果找不到对应的值,就执行最后默认的default中的代码。
编程那点事
