如果我想实现一些可以用这两种方式实现的条件代码。那么哪种方式更好的条件运算符?:或if..then..else ??
答案 0 :(得分:4)
这取决于。通常,您需要主要的活动流程
在代码的结构中表示。如果关键点
算法的一部分是变量x
被初始化
最好的解决方案是使用条件运算符:
x = condition ? f1() : f2();
如果决定是理解内容的关键问题
继续,然后你会更喜欢if
。在实践中,这意味着
如果两者都合理可行,您将使用?:
。该
关键是“合理地” - 如果你发现你正在使用
子表达式中的逗号运算符,子表达式都有
副作用,然后使用?:
可能不“合理”。
当您使用?:
运算符时,除了最简单的运算符外
例如,你应该像if
那样格式化它,例如:
x = condition
? complex_expression_1
: complex_expression_2;
我经常这样做。 (有一个特殊情况,我会推 它:如果我可以将整个功能减少到一次返回 声明。我仍然不会允许逗号的副作用 运算符,但我有时会使用更复杂的表达式 比我原本不会。)
答案 1 :(得分:0)
如果不完全相同,非常接近。即使字节码存在轻微差异。您可以随时进行性能测试。
检查字节码检查javap and jad
答案 2 :(得分:0)
它取决于编译器,但在现代编译器中,if else和三元运算符之间没有区别。不要相信“如果我使用条件运算符,编译器将始终生成更高效的代码”。