【问题标题】:static string vs string in Java [duplicate]Java中的静态字符串与字符串[重复]
【发布时间】:2014-11-21 23:39:47
【问题描述】:

这是一个概念性问题。我知道字符串是不变的;它们的值在创建后无法更改。考虑这个声明 -

private final static String ABC = "abc"; 

private final String ABC = "abc"; 

为什么第一个在性能方面更好?

如果 ABC 的值没有直接在类中的任何地方更新,是否有任何理由需要第二个?

提前致谢。

【问题讨论】:

  • 你了解static和非static的区别吗?
  • 字符串是不可变的,但不一定是常量
  • @oliver Charlesworth - 是的,我了解静态和非静态之间的区别。这个问题是针对 STRINGS 的。感谢所有将问题标记为重复但作为重复提供的链接没有回答我的问题的人。
  • @iamnotmaynard - 请参考此链接 - “字符串是常量;它们的值在创建后无法更改。字符串缓冲区支持可变字符串。因为字符串对象是不可变的,所以它们可以共享。例如:" docs.oracle.com/javase/7/docs/api/java/lang/String.html 重要的是不要将 Java 中的 String 视为任何其他数据类型。这是大多数开发人员不注意的事情。我试图让我的基础知识正确。

标签: java string


【解决方案1】:

第一个只为类的所有实例创建一个副本。但第二个为每个实例创建 ABC。

第一个可以在没有对象本身的情况下调用。

【讨论】:

    【解决方案2】:

    第一个是 ~better~ 因为你不会在所有实例中都有额外的 String 引用。因为它们都是常量表达式,所以您将在类字节码(使用它们的值的地方)中获得相同的行为。

    如果您在任何地方使用反射,还需要考虑一些差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 2012-07-19
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 2014-03-25
      相关资源
      最近更新 更多