【问题标题】:Java isEmpty or "".equals for performance [duplicate]Java isEmpty 或“”。等于性能[重复]
【发布时间】:2015-07-21 08:00:38
【问题描述】:

我在 Adob​​e CQ 中编写了很多组件,因此必须处理很多用户设置属性。在进行 isEmpty 检查之前,我已经厌倦了所有的 null 检查。

我想做类似的事情。

"".equals(string);

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

谢谢 D

【问题讨论】:

  • 即使它做了一些小的性能改进,最终用户会注意到吗?

标签: java performance


【解决方案1】:

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

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

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

另外我真的不会担心它的性能,除非你已经确定它是一个问题

【讨论】:

  • 是啊,增加一个第三方库调用单个方法,真是大获全胜。而且StringUtils.isEmpty(someString) 看起来比someString.isEmpty() 好多了……
  • 我从未参与过没有广泛使用 apache.commons.lang3 的项目;里面有很多有用的东西
  • 当然。如果您在找到与现有 JRE 方法相同的方法后立即添加该库,那么没有它,您将没有任何项目。不要忘记,有用的常量:StringUtils.EMPTY;不再需要一直输入""...
  • StringUtils.isEmpty 实际上是null 或空支票。所以表面上someString.isEmpty() 一直有效,直到someString == null 有任何可能。
【解决方案2】:

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

【讨论】:

  • 我认为 String.equals 是最容易阅读的,这对我来说是最大的胜利。如果性能大致相同,如果它在代码审查中提出,我会争论我的情况。感谢您的意见。
【解决方案3】:

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

string.length() == 0;

【讨论】:

  • 请在您的答案中添加为什么首选第一种方法。
猜你喜欢
  • 1970-01-01
  • 2013-11-14
  • 2014-09-01
  • 1970-01-01
  • 2016-01-07
  • 2023-02-14
  • 2016-03-20
  • 1970-01-01
  • 2012-11-20
相关资源
最近更新 更多