1.什么是switch条件结构
switch 条件结构的使用是搭配 case 关键字来使用的。
表示 判断一个变量与一系列值中的某个值是否相等,其中每个值称为一个分支。
2.switch的语法结构
switch(expression){
case value1:
// 要执行的逻辑处理
break; // break 是可选的关键字
case value2:
// 要执行的逻辑处理
break; // break 是可选的关键字
case value3:
// 要执行的逻辑处理
break; // break 是可选的关键字
......
default: // 可选的分支 : 不一定是放在最后的,放在中间也可以正常执行
// 要执行的逻辑处理
break; // break 是可选的关键字
}
switch中的expression的合法值 :
byte 、short、 int、 char
jdk1.7 之后,支持了 String 类型,且case的值必须是字符串常量。
3.正常使用的例子
String word = "Hello";
switch (word){
case "hei":
int i = 10/5;
System.out.println("计算得到的i = "+i);
System.out.println("you say hei");
break;
case "Hello":
int j = 20/5;
System.out.println("计算得到的 j = "+j);
System.out.println("you say Hello");
break;
case "what":
int k = 30/5;
System.out.println("计算得到的 k = "+k);
System.out.println("you say what");
break;
default:
System.out.println("这是默认输出的值!");
break;
}
// 执行结果是:
计算得到的 j = 4
you say Hello
4.缺失break后的 case穿透现象
当某个case分支中没有写 break时,在执行了该case分支后,会继续执行下一个case分支中的语句,直到遇到break 或 所有分支都执行完成才会结束。这个现象就叫做
case穿透
。因此,在使用switch分支语句时,除非特殊设计,在case分支中一定要写上 break。
String word = "Hello";
switch (word){
case "hei":
int i = 10/5;
System.out.println("计算得到的i = "+i);
System.out.println("you say hei");
break;
case "Hello":
int j = 20/5;
System.out.println("计算得到的 j = "+j);
System.out.println("you say Hello");
//break;
case "what":
int k = 30/5;
System.out.println("计算得到的 k = "+k);
System.out.println("you say what");
//break;
default:
System.out.println("这是默认输出的值!");
//break;
}
// 执行结果
计算得到的 j = 4
you say Hello
计算得到的 k = 6
you say what
这是默认输出的值!
// 结果分析 : 由于 Hello 匹配成功功了 第二个case分支,因此执行了第二个case分支中的逻辑,
而由于没有break语句,导致了case穿透现象,
到了第三个case分支,执行了第三个case分支中的逻辑,也没有break,
因此到了 default中,程序一直执行完毕了。
5.default放在中间
default 关键字也是可以放在中间的
String word = "Hello";
switch (word){
case "hei":
int i = 10/5;
System.out.println("计算得到的i = "+i);
System.out.println("you say hei");
break;
case "Hello":
int j = 20/5;
System.out.println("计算得到的 j = "+j);
System.out.println("you say Hello");
//break;
default:
System.out.println("这是默认输出的值!");
//break;
case "what":
int k = 30/5;
System.out.println("计算得到的 k = "+k);
System.out.println("you say what");
//break;
}
// 执行结果
计算得到的 j = 4
you say Hello
这是默认输出的值! 【这一句就是default中输出的内容,且default中没有break,因此同样出现了穿透现象】
计算得到的 k = 6
you say what
6.完成
Congratulations!
You are one step closer to success!