关于java:当“if else”已经存在时,为什么要学习“switch case”

Why should I learn “switch case” when “if else” already exists

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Advantage of switch over if-else statement
Why Switch/Case and not If/Else If?

我目前正在学校学习"转换案例",我想知道当"如果还有其他的"已经存在时,学习它的意义是什么。"如果是",基本上是另一种方式做"开关箱"。

如果我错了,请纠正我。


听到它有点怀旧。实际上,他们两个看起来是一样的。但代码执行时有点不同。

首先,"开关盒"只用于比较值。但是"if else"可以处理布尔表达式(这将支持更复杂的子句)

如果在找到实际搜索的内容后使用常规"if else",则在最后一个if完成处理之前,进程仍将运行(但实际上,它可以使用跳转技术来具有类似的机制,如"switch case"。)如果使用"switch case",则不会发生这种情况,因为一旦找到要搜索的值,它将中断,并不会继续下一个案例。此外,"switch case"的处理速度比"if else"快,因为它只比较定义的值(而不是表达式)。"开关盒"也有一个良好的格式结构(它简单、紧凑、可读、干净)。


switch-caseif-else结构的区别:

  • switch case只打开值,不计算布尔表达式。
  • 如果您在案例块之后不使用break,switch case将自动执行下面的下一个案例。此功能有时对编写复杂代码很有用,如"电话拨号计划"
  • 当比较的数目很大时,例如在显示"菜单"等时,与if else相比,switch case更优雅。

  • 工具越多越好。把你为什么要知道这两个的最好的陈述说清楚…然而,一个更详细的例子-

    switch语句用于构造的单个变量类型:

    1
    variable == value

    例如,在C语言中,如果您试图将某些内容与几个不同的字符串进行比较,以便做出决定,那么就不能使用开关来实现这一点。在这种情况下,您需要了解if/else构造。

    但是,如果您有大量的顺序检查:

    1
    2
    3
    var == 1  or
    var == 2  or
    var == 3  etc

    编译器可能会获取switch语句并将其转换为跳转表,这将比大量if/else列表的比较更快。


    你应该同时学习。虽然在技术上可以用switch来实现任何if/else序列,反之亦然,但这样做是非常糟糕的做法……在大多数情况下。

    因此,你需要学习这两种结构,了解它们的优点和缺点,并学会运用你的判断来判断何时使用它们是合适的。

    事实上,C和C++和Java(以及C和Pascal等许多语言)都支持交换语句应该告诉你一些有用的东西…


    您应该学习switch结构,因为它是C语言提供的一个有用的工具。

    它与if-else块不同。

    在问题的"注释"部分中,有指向现有StackOverflow答案的链接,这些答案解释了不同之处。

    每一个结构都有其优点和缺点,随着时间的推移,您将了解何时选择一个结构比另一个结构更合适。