最近面试了不少 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;
}
}
}
输入后果:
RED
RED
一旦了解了 switch,你会明确这其实就是一个逻辑扩大的语法糖。新的编码方式能使得后果更清晰,更易于了解和保护。下篇文章聊一聊 switch 字符串背地的原理。
感觉这篇内容帮到了您,请您帮忙点赞评论和转发。
关注公众号『码农洞见』,有你才狂热。