以下哪种方法最快?
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是否使用相同的输出进行编译?
答案 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)
Switch
比if-else
更快.. if-else
的效果大约等于ternary
的效果。因此,逻辑上switch
比所有人都快。
Visit找到像你这样的家伙进行的原始比较和类似的测试!
更好地担心相关代码的可读性和可维护性。如果有两个以上的if / else块一起备份或者其大小不可预测,那么您可能希望选择switch
语句。