Java 中 switch 详解
最近面试了不少Java开发工程师发现对switch比较陌生,我尝试阐述一下我对它的理解和用法。
swich 是什么
【Java 中 switch 详解】switch源于C语言用在编程中,是一个判断选择代码(有时也被划归为一种选择语句)。其功能就是控制流程流转的。switch 语句可以从一系列代码中选出一段去执行。它的格式如下:
switch(integral-selector) {
case integral-value1 : statement;
break;
case integral-value2 : statement;
break;
case integral-value3 : statement;
break;
case integral-value4 : statement;
break;
case integral-value5 : statement;
break;
// ...
default: statement;
}
其中,integral-selector (整数选择因子)是一个能够产生整数值的表达式,switch 能够将这个表达式的结果与每个 integral-value (整数值)相比较。若发现相符的,就执行对应的语句(简单或复合语句,其中并不需要括号)。若没有发现相符的,就执行 default 语句。
在上面的定义中,大家会注意到每个 case 均以一个 break 结尾。这样可使执行流程跳转至 switch 主体的末尾。这是构建 switch 语句的一种传统方式,但 break 是可选的。若省略 break, 会继续执行后面的 case 语句的代码,直到遇到一个 break 为止。通常我们不想出现这种情况,但对有经验的程序员来说,也许能够善加利用。注意最后的 default 语句没有 break,因为执行流程已到了 break 的跳转目的地。当然,如果考虑到编程风格方面的原因,完全可以在 default 语句的末尾放置一个 break,尽管它并没有任何实际的作用。
遵守switch语句规则
- switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:
- 只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
- switch()的参数类型不能为实型 。
- case 标签必须为字符串常量或字面量。
- case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
Java 7 增加了在字符串上 switch 的用法。下例展示了从一组 String 中选择可能值的传统方法,以及新式方法:
public class StringSwitch {
public static void main(String[] args) {
String color = "red";
// 老的方式: 使用 if-then 判断
if("red".equals(color)) {
System.out.println("RED");
} else if("yellow".equals(color)) {
System.out.println("YELLOW");
} else if("blue".equals(color)) {
System.out.println("BLUE");
} else {
System.out.println("Unknown");
}
// 新的方法: 字符串搭配 switch
switch(color) {
case "red":
System.out.println("RED");
break;
case "yellow":
System.out.println("YELLOW");
break;
case "blue":
System.out.println("BLUE");
break;
default:
System.out.println("Unknown");
break;
}
}
}
输出结果:
RED
RED
一旦理解了 switch,你会明白这其实就是一个逻辑扩展的语法糖。新的编码方式能使得结果更清晰,更易于理解和维护。下篇文章聊一聊switch 字符串背后的原理。
觉得这篇内容帮到了您,请您帮忙点赞评论和转发。
关注公众号『 码农洞见 』,有你才狂热。
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募