如果我想实现一些可以以两种方式实现的条件代码。那么哪种方式更好的条件运算符 ?: 或 if..then..else??
问问题
542 次
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 回答