Java中有条件陈述的效率


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

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

在效率方面哪一个更好?执行速度不会比第二种编码方式更快地执行?如果是,它是否明显值得注意?

&&操作员将短路,这意味着,如果左操作数为false,则根本无法评估右操作数。我无法想象测试布尔值比呼叫isBlank更昂贵的情况。另一方面,如果someString是一串很长的白色空间字符(或具有很长的白空间前缀),则可能比测试布尔值要贵得多。进行左侧的布尔测试。

唯一失去的时间是someBooleantrueisBlank返回false。但是损失是微不足道的(测试布尔值的成本),除非这种组合发生的时间占压倒性的时间,否则提高的效率将远远超过损失。

这确实取决于一个或另一个失败。当您使用逻辑运算符时,如果其中一项支票失败,则根据指定的操作员,从评估中进行了捷径。但是,假设这些检查总是通过,那么您发布的代码没有任何区别。

无论如何,正如其他人所指出的,差异将很小但不存在,并且很可能在统计上微不足道。

最新更新