关于OOP:Java switch语句或if语句?

Java switch statement with two cases or if statement?

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

在Java编程时,使用IF语句或开关语句对于只具有两个结果的东西更为经济。例如:

1
2
3
4
5
6
7
char c = 'a';
if (c == 'a') {
   //do something
}
else if (c == 'A') {
   //do something else
}

1
2
3
4
5
6
7
8
9
10
11
char c = 'a';
switch (c) {

   case 'a':
      //do something
      break;

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

哪个更好?


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

Java switch statement with two cases or if statement?

对于你的情况,第一个就足够了,如果不是这样的话。如果有更多类似的情况,请选择开关。这就增加了可读性,而不是增加了大量难看的if else's


对于只有两个值的情况,if else语句比switch语句快。但这并不总是正确的,尤其是当您有许多案例需要测试时。您将在此处找到更多信息:

为什么切换比if快

PS:我注意到一件事,但也许这是您的代码所需要的:如果要测试的元素只能有两个值,那么if-else应该比if-else更好。

希望它有帮助。


如果你确定你只有两个选择的话,你可以选择。如果你不确定,这是一个更大的项目,你正在努力,我会去开关箱,因为它更容易添加案件,如果需要的话。


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

除此之外,干净代码p37中的robert martin提出了一个很好的理由,说明为什么switch语句不是很oop。