if(someBoolean && StringUtils.isBlank(someString)){
}
或
if(StringUtils.isBlank(someString) && someBoolean){
}
哪种效率更好?执行速度不是第二种比第二种编码方式更快的?如果是的话,它是否值得注意?
答案 0 :(得分:3)
&&
运算符将短路,这意味着如果左操作数为false
,则根本不对右操作数进行求值。我无法想象测试布尔值比调用isBlank
更昂贵的情况。另一方面,如果someString
是一个非常长的空白字符串(或者具有非常长的空格前缀),那么这可能比测试布尔值要贵得多。请使用左侧的布尔测试。
这次失败的唯一时间是someBoolean
true
而isBlank
返回false
。但是损失是微不足道的(测试布尔值的成本),除非这种组合在绝大部分时间内发生,所以获得的效率将远远超过损失。
答案 1 :(得分:0)
取决于其中一个是否失败,这很重要。当您使用逻辑运算符时,如果其中一个检查失败,它将根据指定的运算符缩短评估范围。但是,假设这些检查总是通过,那么您发布的代码就没有差异。
无论如何,正如其他人所指出的那样,差异很小但并非不存在,而且很可能在统计上无关紧要。