Java switch使用
涉及关键字:
switch: 表达式
变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型,
case: 分支语句,需要指定当前分支的常量或者字面量
①可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号,每一个case代表一个分支
②case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面量,且不能重复
字面量:字面量是编程语言中表示固定值的符号或记号(token)
default: 默认分支
default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句
break: 终止switch
case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句
①case击穿
②default的作用示例
③break的作用示例
④default+break
⑤多个case
①case击穿
public static void main(String[] args) {
a(1);
System.out.println("----------------------------------");
a(2);
System.out.println("----------------------------------");
a(0);
}
private static void a(int a) {
switch (a){
case 1:
System.out.println("aaaa11");
case 2:
System.out.println("aaaa22");
}
}
②default的作用示例
public static void main(String[] args) {
b(0);
System.out.println("----------------------------------");
b(1);
System.out.println("----------------------------------");
b(2);
}
private static void b(int b) {
switch (b){
case 1:
System.out.println("bbbb11");
case 2:
System.out.println("bbbb22");
default:
System.out.println("bbbb-default");
}
}
③break的作用示例
public static void main(String[] args) {
c(1);
System.out.println("----------------------------------");
c(2);
System.out.println("----------------------------------");
c(0);
}
private static void c(int c) {
switch (c){
case 1:
System.out.println("cccc11");
break;
case 2:
System.out.println("cccc22");
default:
System.out.println("cccc-default");
}
}
④default+break
public static void main(String[] args) {
d(1);
System.out.println("----------------------------------");
d(2);
System.out.println("----------------------------------");
d(0);
}
private static void d(int d) {
switch (d){
case 1:
System.out.println("dddd11");
break;
default:
System.out.println("dddd-default");
break;
case 2:
System.out.println("dddd22");
break;
}
}
public static void main(String[] args) {
f(1);
System.out.println("----------------------------------");
f(2);
System.out.println("----------------------------------");
f(0);
}
private static void f(int f) {
switch (f){
case 1:
System.out.println("ffff11");
break;
default:
System.out.println("ffff-default");
case 2:
System.out.println("ffff22");
break;
}
}
⑤多个case
public static void main(String[] args) {
e(1);
System.out.println("----------------------------------");
e(2);
System.out.println("----------------------------------");
e(0);
System.out.println("----------------------------------");
e(3);
}
private static void e(int e) {
switch (e){
case 1:
case 2:
System.out.println("eeee11");
break;
case 3:
case 4:
System.out.println("eeee22");
break;
default:
System.out.println("eeee-default");
break;
}
}
综上:
1、正常情况下,针对不是最后一个的case分支,均需要配合break使用来终止switch语句,防止case击穿
2、多个case可以使用同一个分支,详见”⑤多个case“
3、有default分支的话,位置最好放在最后,此时不需要添加break;如果放在中间的位置,则需要配合break使用,用以终止switch语句。详见” ④default+break“