三元运算符是否比“if”条件更快[重复]

问题

这个问题在这里已有答案:

  • 哪个"if"构造更快 - 语句或三元运算符? 5个答案

我倾向于"if-conditional syndrome",这意味着我倾向于一直使用条件。我很少使用三元运算符。例如:

//I like to do this:
int a;
if (i == 0)
{
    a = 10;
}
else
{
    a = 5;
}

//When I could do this:
int a = (i == 0) ? 10:5;

我使用哪个问题?哪个更快?是否存在显着的性能差异?尽可能使用最短的代码是一种更好的做法吗?

我使用Java编程语言。


#1 热门回答(96 赞)

我使用哪个问题?

是!第二个是更具可读性。你正在交易一行,它简明扼要地表达你想要的九行有效混乱。

哪个更快?

都不是。

尽可能使用最短的代码是更好的做法吗?

不是"只要有可能",但在任何可能的情况下都不会产生不利影响。较短的代码至少可能更具可读性,因为它侧重于相关部分而不是偶然影响("样板代码")。


#2 热门回答(32 赞)

如果有任何性能差异(我怀疑),它将是微不足道的。专注于编写最简单,最易读的代码。

话虽如此,试着克服你对条件运算符的厌恶 - 尽管过度使用它肯定是可能的,但在某些情况下它可能是有用的。在你给出的具体例子中,我肯定会使用条件运算符。


#3 热门回答(25 赞)

三元运算符示例:

int a = (i == 0) ? 10 : 5;

你不能用if / else这样做:

// invalid:
int a = if (i == 0) 10; else 5;

这是使用三元运算符的一个很好的理由。如果你没有作业:

(i == 0) ? foo () : bar ();

if / else不是那么多代码:

if (i == 0) foo (); else bar ();

在性能危急情况下:测量它。如果存在瓶颈,请使用目标计算机(目标JVM)测量它,并使用典型数据。否则为了可读性。

嵌入在上下文中,简短形式有时非常方便:

System.out.println ("Good morning " + (p.female ? "Miss " : "Mister ") + p.getName ());