问题
这个问题在这里已有答案:
- 哪个"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 ());