两个IF语句与一个AND语句

时间:2012-03-06 11:08:14

标签: java performance

在java中我想知道哪些更有效:

if(something)
   {
      if(something)
    }

if((something) &&(something))

我想知道两者在性能方面的优点是什么。哪种解决方案更适合不同的数据对象。

5 个答案:

答案 0 :(得分:20)

表现将完全相同。将评估第一个语句,只有当它为真时才会评估第二个语句。

这仅仅是一个可读性问题。除非在第一个语句为真的情况下需要做某些事情,否则无论第二个语句是什么,我都会同时使用两个语句,因为更清楚的是两个语句都需要为某些事情发生。你也不必不必要地缩进。

答案 1 :(得分:3)

在Java中,&&短路。这意味着如果a && b中的第一个条件评估为false,则第二个条件甚至不会被评估。

因此,两者几乎肯定会产生相同的代码,并且没有性能差异。

在这两种形式中,您应该使用更清晰的代码中的任何一种结果。

答案 2 :(得分:2)

一般来说,它们都是一样的。如果第一个被评估为false,则不会评估第二个。如果第一个是假的,你想要发生某些事情,你应该使用单独的if语句。否则,如果您只想确保两者都为真,并且如果其中一个返回false则不执行任何操作,则可以使用第二个选项。

答案 3 :(得分:2)

请注意,Java中的&&运算符是一个短路运算符。这意味着如果&&左侧的表达式为false,Java将不会费心评估右侧的表达式,因为结果将是{{1}无论右侧表达式的评估结果如何。

因此,实际上,这两种结构的性能将是相同的。

请注意,Java也有一个false运算符。那个不会短路:它总是会评估&两侧的表达式。

答案 4 :(得分:0)

我不知道但是,凭直觉,我认为一旦编译成字节码就没有区别......