if/else vs 三元运算符

Posted

技术标签:

【中文标题】if/else vs 三元运算符【英文标题】:if/else vs ternary operator 【发布时间】:2010-12-12 05:06:07 【问题描述】:

考虑到评估时间,下面两个是等价的吗?

if(condition1)

    //code1

else

    //code2

condition1 ? code1 : code2

或者它们只是语法不同?

【问题讨论】:

【参考方案1】:

不同的是,后者可以根据条件返回一个值

例如,如果您有以下语句:

if (SomeCondition())

    text = "Yes";

else

    text = "No";

使用三元运算符,您将编写:

text = SomeCondition() ? "Yes" : "No";

注意第一个示例如何根据条件执行语句,而第二个示例根据条件返回值

【讨论】:

【参考方案2】:

嗯...在前一种情况下,您可以使用任意数量或类型(表达式与语句)的代码来代替 code1code2。在后一种情况下,它们必须是有效的表达式。

【讨论】:

【参考方案3】:

是的,是的。

唯一的好处就是节省代码行数。

【讨论】:

不是唯一一个。第二个变体可用于根据条件将引用绑定到两个不同的对象,第一个不能用于此。【参考方案4】:

是的,这是两种不同的语法形式,它们的工作方式相同,并且最有可能相同的代码将由编译器生成。

【讨论】:

以上是关于if/else vs 三元运算符的主要内容,如果未能解决你的问题,请参考以下文章

Java中与if else相比三元运算符的弊端?

JavaScript 三元运算符变成完整的 if/else 语句问题

java java.java中的三元if else运算符

java java.java中的三元if else运算符

java java.java中的三元if else运算符

java java.java中的三元if else运算符