switch和else语句有什么区别?有哪些区别?

2021年4月19日12:10:10 发表评论 812 次浏览

switch语句通常比一组嵌套的ifs更有效。根据可读性和该语句正在测试的表达式来决定使用if-then-else语句还是switch语句

  1. 检查测试表达式:if-then-else语句可以基于值或条件的范围来测试表达式, 而switch语句仅基于单个整数, 枚举值或String对象来测试表达式。
  2. 更好地切换以进行多路分支:当编译器编译一个switch语句时, 它将检查每个大小写常量, 并创建一个"跳转表", 该表将用于根据表达式的值选择执行路径。因此, 如果需要在一大组值中进行选择, 则switch语句的运行速度将比使用if-elses序列编码的等效逻辑快得多。编译器可以执行此操作, 因为它知道大小写常量都是相同的类型, 并且仅需与switch表达式进行相等性比较, 而对于if表达式, 编译器则不具备这种知识。
  3. if-else对于布尔值更好:If-else条件分支适用于导致布尔值的可变条件, 而switch语句适用于固定数据值。
  4. 速度:如果情况良好, 那么switch语句可能会比执行更快。如果只有很少的情况, 则在任何情况下都不会影响速度。如果案例数大于5, 则优先使用switch, 否则, 也可以使用if-else。
    如果开关包含五个以上的项目, 则使用查找表或哈希列表来实现。这意味着, 与if:s列表相比, 所有项目都具有相同的访问时间, 在if:s列表中, 最后一个项目需要花费更多的时间, 因为它必须首先评估每个先前条件。
  5. 可读性的清晰度:当你必须合并箱子时, 开关看起来更干净。如果也很容易出错。缺少else语句会使你陷入混乱。使用开关也可以更加轻松地添加/删除标签, 并使代码的更改和维护变得更加容易。

最后, 根据你的代码需求实现更清晰, 更可维护的设计。如果你要降落在巨大的开关盒或if-else块中, 请切换到其他技术, 例如多态性。只要找出对象的行为, 并尝试封装它(如果可能)。

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: