【问题标题】:JDK constant for empty String [duplicate]空字符串的JDK常量[重复]
【发布时间】:2012-09-30 08:30:52
【问题描述】:

可能重复:
Why is there no String.Empty in java?

是否有用于空字符串的 JDK 常量,例如 String.EMPTY,等于“”?我似乎找不到它。我更喜欢使用它而不是“”。

谢谢

【问题讨论】:

  • 为什么?好像使用 "" 不会花费任何额外的内存或任何东西。

标签: java


【解决方案1】:

不,没有。但是由于整个世界(嗯,几乎)都在使用 Jakarta Commons-Lang,所以你也可以。使用StringUtils.EMPTYhttp://commons.apache.org/lang/api-2.6/org/apache/commons/lang/StringUtils.html#EMPTY

【讨论】:

  • 我不能成为“整个世界”的一部分。
  • 加入我们还为时不晚。
  • 好的@Code-Guru,我相应地编辑了我的回复。
  • 如果我不想加入你怎么办? =p
【解决方案2】:

"" 有什么问题?它的行为就像一个常量,取自字符串池,写起来真的很短,比String.EMPTY短得多。

另外,如果您需要测试一个字符串是否为空,只需这样做:

myString.isEmpty();

更新

如果字符串可以为空,最好使用 Apache Common 的 StringUtils 类中的 isEmpty()isNotBlank()

【讨论】:

  • 使用"" 只有一个缺点:IDE 不会对其进行索引,因此您不可能查找该常量(或任何字符串文字,就此而言)的引用。
  • @Isaac 你的 IDE 有全文搜索,对吧?
  • 如果 myString 为空怎么办? isEmpty 也不是静态的,所以你不能做 String.isEmpty(myString) - 至少在 Java 6 中不是。
  • @Goyuix 问题中没有提到字符串可能为空的事实。对于该要求,请使用 Apache 的 StringUtils 类中的 isEmpty()isNotBlank()
  • @Isaac 这不是等效的,但根据我的经验足够接近。它胜过用清晰、明显的字符串文字来换取这样的怪物。但话又说回来,我是一个 Python 人,我可能有偏见:-)
【解决方案3】:

Apache Commons 完全符合您的要求。它有一个名为 StringUtils.EMPTY 的常量。如果你想看看,这里是图书馆的链接:http://commons.apache.org/lang/

【讨论】:

    【解决方案4】:

    其他人已经指出了 .isEmpty() 函数,所以我会更进一步。我想知道一个字符串是 Null 还是 Empty 还是 Whitespace(即空格和/或制表符)。所以我写了自己的方法来做。

    //Check to see if a string is null or empty
    public static boolean stringIsNullOrEmpty(String s)
    {
        return (s == null) || (s.isEmpty());
    }
    
    //Check to see if a string is null or empty or whitespace
    public static boolean stringIsNullOrWhiteSpace(String s)
    {
        return (s == null) || (s.trim().isEmpty());
    }
    

    要使用这些,您可以执行类似的操作

    String myString = "whatever";
    
    if(stringIsNullOrWhiteSpace(myString))
    {
        doSomething();
    }
    

    祝你好运!

    【讨论】:

      【解决方案5】:

      我所知道的默认 JDK 中没有任何内容。您可能需要定义自己的常量,或导入具有常量的第三方库。

      如果您的意图是检查空字符串,您可以尝试以下操作。

      YOUSTRING.isEmpty();

      但是请注意,isEmpty 不是 Null 安全的,并且不是在所有版本的 JDK 中。

      为保证 null 安全,请使用 "".equals(YOURSTRING);

      但是,每次执行此操作时都会将空字符串添加到 HEAP 中。因此最好指向一个public static final 常量,这样堆上就只有一个。

      【讨论】:

      • -1 因为这不能回答问题。
      • @Isacc 好点。谢谢指正。
      猜你喜欢
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      相关资源
      最近更新 更多