条件运算符vs if then else

如果我想实现一些可以用这两种方式实现的条件代码。 那么哪种方式更好的条件运算符?:或者if..then..else ??

这取决于。 通常,您希望主要的活动流程在代码结构中表示。 如果算法的关键点是变量x被初始化,那么最好的解决方案是使用条件运算符:

 x = condition ? f1() : f2(); 

如果决定是理解正在发生的事情的关键问题,那么你会更喜欢if 。 在实践中,这意味着当两者都合理可能时,你会使用?: 。 关键是“合理地” – 如果你发现你在子表达式中使用逗号运算符,子表达式有副作用,那么使用?:可能不是“合理的”。

编辑:

当你使用?:运算符时,除了最简单的情况之外,你应该像if那样格式化它,例如:

 x = condition ? complex_expression_1 : complex_expression_2; 

我经常这样做。 (有一个特殊的情况我会推它:如果我可以将整个函数减少到单个return语句。我仍然不会允许逗号运算符的副作用,但我有时会使用比我更复杂的表达式将。)

如果不完全一样,它们非常接近 。 即使字节码存在细微差别。您也可以随时进行性能测试。

检查字节码检查javap and jad

它取决于编译器,但在现代编译器中,if else和三元运算符之间没有区别。不要相信“如果我使用条件运算符,编译器将始终生成更高效的代码”。