if(someBoolean && StringUtils.isBlank(someString)){
}
或
if(StringUtils.isBlank(someString) && someBoolean){
}
在效率方面哪一个更好?执行速度不会比第二种编码方式更快地执行?如果是,它是否明显值得注意?
&&
操作员将短路,这意味着,如果左操作数为false
,则根本无法评估右操作数。我无法想象测试布尔值比呼叫isBlank
更昂贵的情况。另一方面,如果someString
是一串很长的白色空间字符(或具有很长的白空间前缀),则可能比测试布尔值要贵得多。进行左侧的布尔测试。
唯一失去的时间是someBoolean
为true
,isBlank
返回false
。但是损失是微不足道的(测试布尔值的成本),除非这种组合发生的时间占压倒性的时间,否则提高的效率将远远超过损失。
这确实取决于一个或另一个失败。当您使用逻辑运算符时,如果其中一项支票失败,则根据指定的操作员,从评估中进行了捷径。但是,假设这些检查总是通过,那么您发布的代码没有任何区别。
无论如何,正如其他人所指出的,差异将很小但不存在,并且很可能在统计上微不足道。