最近面试了不少Java开发工程师发现对switch比拟生疏,我尝试论述一下我对它的了解和用法。
swich 是什么
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具备雷同的值。
switch 字符串
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; } }}
输入后果:
REDRED
一旦了解了 switch,你会明确这其实就是一个逻辑扩大的语法糖。新的编码方式能使得后果更清晰,更易于了解和保护。下篇文章聊一聊switch 字符串背地的原理。
感觉这篇内容帮到了您,请您帮忙点赞评论和转发。
关注公众号『 码农洞见 』,有你才狂热。