【问题标题】:Java switch statement with two cases or if statement? [duplicate]Java switch 语句有两种情况还是 if 语句? [复制]
【发布时间】:2014-09-18 14:56:20
【问题描述】:

您好
出于兴趣,在使用 java 编程时,对于只能有两个结果的事情,使用 if 语句或 switch 语句会更经济吗?

例如:

char c = 'a';
if (c == 'a') {
   //do something
}
else if (c == 'A') {
   //do something else
}

char c = 'a';
switch (c) {

   case 'a':
      //do something
      break;

   case 'A':
      //do something else
      break;
}



哪个更好?

【问题讨论】:

  • 计算行号和缩进。我认为,对于这种情况,这很明显
  • 如果它只能有2个结果会不会更好只有“else”而不是else if?
  • 这个问题已经被问过好几次了。见stackoverflow.com/questions/2086529/…
  • 请注意,如果if-else 语句的目的是分配一个或另一个值(但仅限于这两种可能性之一),那么最简单的方法是使用三元运算。跨度>
  • 性能方面,您可能不会看到太大差异。就您而言,这似乎更多是个人喜好问题。我会选择if/else ifif/else,因为这是我更常针对诸如此类的简单案例编写的内容。

标签: java oop if-statement switch-statement


【解决方案1】:

答案实际上取决于使用的兴趣。我通常做的是,如果我的条件更多(3或以上)我会去切换。否则我只是使用if-else-if

Java switch 语句有两种情况还是 if 语句?

对于您的情况,第一个就足够了,即 if else。如果有更多这样的情况,更喜欢switch。与丑陋的if else's 相比,这增加了可读性。

【讨论】:

    【解决方案2】:

    如果您确定只有 2 个选项,请选择 if else。 如果您不确定并且您正在从事的项目更大,我会选择 switch case,因为如果需要,它更容易添加案例。

    【讨论】:

      【解决方案3】:

      在您的情况下,只有两个值,if-else 语句比 switch 语句快。 但这并不总是正确的,尤其是当您有很多案例要测试时。 您可以在这里找到更多信息:

      Why switch is faster than if

      PS:我注意到一件事,但也许你的代码需要它:如果要测试的元素只能有两个值,if-else 应该比 if-else如果

      希望对你有帮助。

      【讨论】:

        【解决方案4】:

        switch 语句通常被认为比if-else 更容易出错,即忘记defaultbreak。在较短的情况下,说两个结果if-else 可能更可取,速度上不太可能有任何明显的差异。

        除此之外,Robert MartinClean Code p37 中提出了一个很好的论点,为什么 switch 语句不是非常 OOP。

        【讨论】:

          猜你喜欢
          • 2020-11-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-02
          • 1970-01-01
          相关资源
          最近更新 更多