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中的代码。