Java中条件语句的效率

时间:2016-12-16 17:38:22

标签: java

if(someBoolean && StringUtils.isBlank(someString)){
}

if(StringUtils.isBlank(someString) && someBoolean){
}

哪种效率更好?执行速度不是第二种比第二种编码方式更快的?如果是的话,它是否值得注意?

2 个答案:

答案 0 :(得分:3)

&&运算符将短路,这意味着如果左操作数为false,则根本不对右操作数进行求值。我无法想象测试布尔值比调用isBlank更昂贵的情况。另一方面,如果someString是一个非常长的空白字符串(或者具有非常长的空格前缀),那么这可能比测试布尔值要贵得多。请使用左侧的布尔测试。

这次失败的唯一时间是someBoolean trueisBlank返回false。但是损失是微不足道的(测试布尔值的成本),除非这种组合在绝大部分时间内发生,所以获得的效率将远远超过损失。

答案 1 :(得分:0)

取决于其中一个是否失败,这很重要。当您使用逻辑运算符时,如果其中一个检查失败,它将根据指定的运算符缩短评估范围。但是,假设这些检查总是通过,那么您发布的代码就没有差异。

无论如何,正如其他人所指出的那样,差异很小但并非不存在,而且很可能在统计上无关紧要。