# 2 楼答案 视情况而定。通常,您希望活动的主要流程 在代码的结构中表示。如果关键点 算法的关键是初始化变量x,然后 最好的解决方案是使用条件运算符: x = condition ? f1() : f2(); 如果决策是理解问题的关键 继续,那么你会更喜欢if。实际上,这意味着 当两者都合理可行时,您将使用?:。这个 关键是“合理”——如果您发现您正在使用 子表达式中的逗号运算符,其中 副作用,那么使用?:可能是不“合理的” 编辑: 当您使用?:运算符时,除了最简单的 在某些情况下,您应该完全按照if的格式对其进行格式化,例如: x = condition ? complex_expression_1 : complex_expression_2; 我经常这样做。(有一种特殊情况,我推 它:如果我能将整个函数缩减为一个返回 陈述我仍然不允许逗号的副作用 运算符,但我有时会使用更复杂的表达式 否则我就不会这么做了。)
# 1 楼答案
它依赖于编译器,但在现代编译器中,if-else和三元运算符并没有区别。不要相信“如果我使用条件运算符,编译器将始终生成更高效的代码”
# 2 楼答案
视情况而定。通常,您希望活动的主要流程 在代码的结构中表示。如果关键点 算法的关键是初始化变量
x
,然后 最好的解决方案是使用条件运算符:如果决策是理解问题的关键 继续,那么你会更喜欢
if
。实际上,这意味着 当两者都合理可行时,您将使用?:
。这个 关键是“合理”——如果您发现您正在使用 子表达式中的逗号运算符,其中 副作用,那么使用?:
可能是不“合理的”编辑:
当您使用
?:
运算符时,除了最简单的 在某些情况下,您应该完全按照if
的格式对其进行格式化,例如:我经常这样做。(有一种特殊情况,我推 它:如果我能将整个函数缩减为一个返回 陈述我仍然不允许逗号的副作用 运算符,但我有时会使用更复杂的表达式 否则我就不会这么做了。)
# 3 楼答案
如果不完全相同,它们也非常接近。即使字节码也有细微差别。您可以随时进行性能测试以确保
要检查字节码,请签出
javap and jad