Java系列分享
【测开技能】Java语言系列(一)Java入门
【测开技能】Java语言系列(二)Java基础语法
【测开技能】Java语言系列(三)变量和数据类型
【测开技能】Java语言系列(四) 整数运算
【测开技能】Java语言系列(五) 浮点数运算
【测开技能】Java语言系列(六) 布尔运算
【测开技能】Java语言系列(七) 字符和字符串
【测开技能】Java语言系列(八)数组类型
【测开技能】Java语言系列(九)输入和输出
【测开技能】Java语言系列(十)if判断
正文
除了if语句外,还有一种条件判断,是根据某个表达式的结果,分别去执行不同的分支。
比如我们在玩游戏的时候,会有单人游戏,多人游戏,退出游戏。
这时,switch语句就派上用场了。
switch语句根据switch (表达式)计算的结果,跳转到匹配的case结果,然后继续执行后续语句,直到遇到break结束执行。
我们来举一个例子
代码语言:javascript复制
public class main {
public static void main(String[] args) {
String options="单人游戏";
switch (options){
case "单人游戏":
System.out.println("开始单人游戏");
break;
case "多人游戏":
System.out.println("多人游戏");
break;
case "退出游戏":
System.out.println("退出游戏");
break;
}
}
}
执行下,看下结果
可以根据options来执行不通的代码,但是有人会说,假如options为注册,就没有可以输出了,那么如何实现呢。
代码语言:javascript复制public class main {
public static void main(String[] args) {
String options="注册";
switch (options){
case "单人游戏":
System.out.println("开始单人游戏");
break;
case "多人游戏":
System.out.println("多人游戏");
break;
case "退出游戏":
System.out.println("退出游戏");
break;
default:
System.out.println("没有执行选项");
}
}
}
用一个default就实现了,没有选项就有一个默认输出,其实这些就相当于if... else if ... else...,但是用switch更加的清晰。
但是在switch中,会出现case多个执行,比如我们去掉break
代码语言:javascript复制public class main {
public static void main(String[] args) {
String options="单人游戏";
switch (options){
case "单人游戏":
System.out.println("开始单人游戏");
// break;
case "多人游戏":
System.out.println("多人游戏");
// break;
case "退出游戏":
System.out.println("退出游戏");
// break;
default:
System.out.println("没有执行选项");
}
}
}
结果
也就是switch 会一直执行所有的代码,直到遇到break才会结束。因此,我们在实现的时候,一定要记得break。
代码语言:javascript复制使用switch语句时,只要保证有break,case的顺序不影响程序逻辑:
switch (option) {
case 3:
...
break;
case 2:
...
break;
case 1:
...
break;
}
但是仍然建议按照自然顺序排列,便于阅读。
编译检查
使用IDE时,可以自动检查是否漏写了break
语句和default
语句,方法是打开IDE的编译检查。
Eclipse中,选择Preferences - Java - Compiler - Errors/Warnings - Potential programming problems,将以下检查标记为Warning:
- 'switch' is missing 'default' case
- 'switch' case fall-through
在Idea中,选择Preferences - Editor - Inspections - Java - Control flow issues,将以下检查标记为Warning:
- Fallthrough in 'switch' statement
- 'switch' statement without 'default' branch