2015-07-21 56 views
2

我在Adobe CQ中编写了很多组件,因此必须处理大量的用户设置属性。在我可以执行isEmpty检查之前,我对所有空检查感到厌倦。Java isEmpty或“”.equals性能

我想做类似的事情。

"".equals(string); 

这会更具可读性,但它如何比较性能呢?是的,如果有多重检查,我希望能够创建“”作为常量。

感谢 d

+0

即使它做了一些小小的改进,对于最终用户来说它甚至是可以通知的吗? –

回答

1
+4

你真的使用Objects.equals(“”,str)'来检查字符串是否为空吗? –

+0

@TagirValeev有什么更好的?我一直使用'Objects.equals()',否则比较可能是一个错误农场。 –

+0

如果有一个专门的方法('isEmpty()'),为什么要使用'equals(Object)',这样做,你想要什么? 'isEmpty()'确实更快,更易于阅读。 – Turing85

0

你不应该在乎的表现在这里。两个版本都有类似的速度。即使它们的编译方式不同,JITted代码的差异也不会超过几个CPU周期(特别是考虑到String.equals是JVM固有的事实)。不是在Java上编程时应该担心的事情。

+0

我认为String.equals是最容易阅读的,这对我来说是最大的胜利。如果性能差不多,我会在代码审查中提出我的观点。感谢您的意见。 – DamianM

0

优选使用isEmpty()方法(更简单和更快的源代码)。 检查空字符串在java中的另一种有效的方法是使用:

string.length() == 0; 
+1

请将您的回答添加到第一个方法为什么是首选。 – JackWhiteIII

1

我个人使用Apache's StringUtils,如:

if (StringUtils.isEmpty(someString)) { 
    ... 

if (StringUtils.isNotEmpty(someString)) { 
    ... 

而且我真的不担心关于这方面的表现,除非你有基准确定它是一个问题

+1

是的,添加第三方库来调用单一方法,确实是一个巨大的胜利。和'StringUtils.isEmpty(someString)'看起来比'someString.isEmpty()'好得多...... – Holger

+0

我从来没有在一个没有广泛使用apache.commons.lang3的项目上工作;当然有很多有用的东西 – beresfordt

+0

。如果您在找到与现有JRE方法相同的方法时立即添加该库,则不会在没有该方法的情况下拥有任何项目。不要忘记,有用的常量:'StringUtils.EMPTY';不再需要一直输入'“”'... – Holger