Java:if,switch或question mark double point

时间:2015-04-28 16:48:22

标签: java if-statement switch-statement conditional-statements

以下哪种方法最快?

int i;
String s;

1。如果没有

if(i == 0)
    s = "Case A"
else if(i == 1)
    s = "Case B"
else
    s = "Case C"

2。开关

switch(i) {
    case 0:
        s = "Case A"; break;
    case 1:
        s = "Case B"; break;
    default:
        s = "Case C"; break;
}

3。 ?并且:

s = (i == 0 ? "Case A" : (i == 1 ? "Case B" : "Case C"))

此外,方法1和3是否使用相同的输出进行编译?

3 个答案:

答案 0 :(得分:3)

查看您的代码,使用任何现代编译器,所有上述条件编译成相同的指令。专注于代码的可读性和可维护性。它们对性能的影响可以忽略不计

您可以在不能使用if-else或切换的地方使用三元

System.out.println ("Good morning " + (p.female) ? "Miss " : "Mister " + p.getName ());

注重可读性和可维护性。当你开始处理大型代码库时,不能强调这一点。

但是让我们说你有更多的条件,那么切换会更受欢迎,因为它会更简洁,可读,性能更高

点击此链接 - http://www.blackwasp.co.uk/SpeedTestIfElseSwitch.aspx

答案 1 :(得分:0)

这取决于你有多少if / else语句。一般的经验法则是,如果你有三个以上的if / else语句,那么切换速度会更快。这仅适用于普通情况,但如果第一个if在95%的情况下都是真的,则会停止为真。

如果我没有弄错的话,你的第一和第三个案件应该花费相同的时间。我认为他们编译完全相同。

答案 2 :(得分:0)

Switchif-else更快.. if-else的效果大约等于ternary的效果。因此,逻辑上switch比所有人都快。

Visit找到像你这样的家伙进行的原始比较和类似的测试!

更好地担心相关代码的可读性和可维护性。如果有两个以上的if / else块一起备份或者其大小不可预测,那么您可能希望选择switch语句。