在java中我想知道哪些更有效:
if(something)
{
if(something)
}
或
if((something) &&(something))
我想知道两者在性能方面的优点是什么。哪种解决方案更适合不同的数据对象。
答案 0 :(得分:20)
表现将完全相同。将评估第一个语句,只有当它为真时才会评估第二个语句。
这仅仅是一个可读性问题。除非在第一个语句为真的情况下需要做某些事情,否则无论第二个语句是什么,我都会同时使用两个语句,因为更清楚的是两个语句都需要为某些事情发生。你也不必不必要地缩进。
答案 1 :(得分:3)
在Java中,&&
短路。这意味着如果a && b
中的第一个条件评估为false
,则第二个条件甚至不会被评估。
因此,两者几乎肯定会产生相同的代码,并且没有性能差异。
在这两种形式中,您应该使用更清晰的代码中的任何一种结果。
答案 2 :(得分:2)
一般来说,它们都是一样的。如果第一个被评估为false,则不会评估第二个。如果第一个是假的,你想要发生某些事情,你应该使用单独的if语句。否则,如果您只想确保两者都为真,并且如果其中一个返回false则不执行任何操作,则可以使用第二个选项。
答案 3 :(得分:2)
请注意,Java中的&&
运算符是一个短路运算符。这意味着如果&&
左侧的表达式为false
,Java将不会费心评估右侧的表达式,因为结果将是{{1}无论右侧表达式的评估结果如何。
因此,实际上,这两种结构的性能将是相同的。
请注意,Java也有一个false
运算符。那个不会短路:它总是会评估&
两侧的表达式。
答案 4 :(得分:0)
我不知道但是,凭直觉,我认为一旦编译成字节码就没有区别......