多重&&和和嵌套if

时间:2014-04-07 07:04:30

标签: java php android performance

请我试着找出两者之间的区别。 以下是示例

for multiple&&操作者:

if(a>b && b>c){
    // do some thing
}

用于嵌套if条件

if(a>b){
    if(b>c){
        //do some thing`enter code here`
    }
}

哪个很快,应该使用哪个。  两者有什么区别。 我想知道复杂度增加时的表现。

6 个答案:

答案 0 :(得分:0)

只有轻微的性能差异,选择多个&&运算符使代码简单易懂

答案 1 :(得分:0)

这两个是等价的:

if (condition1) block1 
else if (condition2) block2

if (condition1) block1 
else
{
   if (condition2) block2
}

我认为他们也会编译成同一个程序集,因此应该没有区别。

答案 2 :(得分:0)

差异主要在于可读性和维护性。

2个逻辑条件的连接通常应该意味着它们之间存在语义关系。

另一件需要考虑的事情是范围界定。嵌套if在这方面为您提供了额外的灵活性。

答案 3 :(得分:0)

他们实际上都是一样的。无论哪种方式,您必须测试至少一个条件。在这两个示例中,如果a小于b,则评估将结束,程序将继续执行下一位代码。此外,现代java编译器实际上将这两个示例编译为相同的字节码。所以,要回答你的问题,要么是好的,要么不会表现出比另一个更好的表现。我个人使用第一个例子,因为它更紧凑,我觉得它更容易阅读。

答案 4 :(得分:0)

我认为第一个是标准方法。

 if(a>b && b>c)
{
// do some thing
}

它减少了行数。这意味着它遵循不重复自己(DRY)原则。在java中,执行逐行

答案 5 :(得分:0)

请注意,在逻辑AND版本(&&)的情况下,ANSI C不需要特定的操作顺序。这意味着如果第二次测试取决于第一次测试的结果,那么两者可能产生不同的结果。

将每个测试包含在额外的括号中以避免运算符优先级问题也是明智的。