我在Adobe CQ中编写了很多组件,因此必须处理大量的用户设置属性。在我可以执行isEmpty检查之前,我对所有空检查感到厌倦。Java isEmpty或“”.equals性能
我想做类似的事情。
"".equals(string);
这会更具可读性,但它如何比较性能呢?是的,如果有多重检查,我希望能够创建“”作为常量。
感谢 d
我在Adobe CQ中编写了很多组件,因此必须处理大量的用户设置属性。在我可以执行isEmpty检查之前,我对所有空检查感到厌倦。Java isEmpty或“”.equals性能
我想做类似的事情。
"".equals(string);
这会更具可读性,但它如何比较性能呢?是的,如果有多重检查,我希望能够创建“”作为常量。
感谢 d
使用Objects.equals()
。它完美地解决了你的问题。
你真的使用Objects.equals(“”,str)'来检查字符串是否为空吗? –
@TagirValeev有什么更好的?我一直使用'Objects.equals()',否则比较可能是一个错误农场。 –
如果有一个专门的方法('isEmpty()'),为什么要使用'equals(Object)',这样做,你想要什么? 'isEmpty()'确实更快,更易于阅读。 – Turing85
你不应该在乎的表现在这里。两个版本都有类似的速度。即使它们的编译方式不同,JITted代码的差异也不会超过几个CPU周期(特别是考虑到String.equals
是JVM固有的事实)。不是在Java上编程时应该担心的事情。
我认为String.equals是最容易阅读的,这对我来说是最大的胜利。如果性能差不多,我会在代码审查中提出我的观点。感谢您的意见。 – DamianM
优选使用isEmpty()
方法(更简单和更快的源代码)。 检查空字符串在java中的另一种有效的方法是使用:
string.length() == 0;
请将您的回答添加到第一个方法为什么是首选。 – JackWhiteIII
我个人使用Apache's StringUtils,如:
if (StringUtils.isEmpty(someString)) {
...
或
if (StringUtils.isNotEmpty(someString)) {
...
而且我真的不担心关于这方面的表现,除非你有基准确定它是一个问题
是的,添加第三方库来调用单一方法,确实是一个巨大的胜利。和'StringUtils.isEmpty(someString)'看起来比'someString.isEmpty()'好得多...... – Holger
我从来没有在一个没有广泛使用apache.commons.lang3的项目上工作;当然有很多有用的东西 – beresfordt
。如果您在找到与现有JRE方法相同的方法时立即添加该库,则不会在没有该方法的情况下拥有任何项目。不要忘记,有用的常量:'StringUtils.EMPTY';不再需要一直输入'“”'... – Holger
即使它做了一些小小的改进,对于最终用户来说它甚至是可以通知的吗? –