-5

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

4

3 回答 3

4

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

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

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

编辑:

当您使用?:运算符时,除了最简单的情况外,您应该完全按照您的方式格式化它if,例如:

x = condition
    ? complex_expression_1
    : complex_expression_2;

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

于 2012-12-07T16:06:58.320 回答
0

如果不完全相同,它们非常接近。即使字节码存在细微差别。您始终可以进行性能测试以确定。

检查字节码检查javap and jad

于 2012-12-07T16:06:05.437 回答
0

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

于 2012-12-07T16:07:29.097 回答