Java:if、switch或问号双点

Java: if, switch or question mark double point

以下哪种方法最快?

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"))

另外,方法一和方法三编译后的输出是一样的吗?

这取决于您有多少 if/else 语句。一般的经验法则是,如果您有三个以上的 if/else 语句,则 switch 会更快。不过,这仅适用于一般情况,如果第一个 if 在 95% 的时间内为真,则不再为真。

如果我没记错的话,你的第一个和第三个案例应该花费相同的时间。我认为它们编译成完全相同的东西。

Switchif-else 快.. if-else 的性能大约等于 ternary 的性能。所以,逻辑上 switch 比所有的都快。

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

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

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

你可以在不能使用 if-else 或 switch 的地方使用三元,例如

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

关注可读性和可维护性。当您开始处理大型代码库时,怎么强调都不过分。

但是假设你有更多的条件,那么 switch 将是首选,因为它会更简洁、可读性更强,而且性能更好

在此处查看此 link- http://www.blackwasp.co.uk/SpeedTestIfElseSwitch.aspx