【问题标题】:Is a valid scenario for assigning string from string pool?从字符串池分配字符串是否有效?
【发布时间】:2014-03-06 16:03:37
【问题描述】:

我被赋予了以下条件?

String A="a";
String B="b";
String c="a"+"b";

我的问题是新创建的字符串c还是从字符串池中分配了值“a”和“b”,根据上面的问题总共形成了多少个字符串?

【问题讨论】:

  • -1 : 关于字符串池的答案已经很多了,我想知道你怎么能问这个,除非你根本没有在 SO 上搜索过。
  • 这可能是重复的:string pool behavior
  • 我知道是他们的,甚至我也读了好几遍,但是在看一篇文章时有点困惑

标签: java


【解决方案1】:

是的 c 是新创建的。 Java 中的字符串实际上是immutable(即一旦创建,它们就永远不会改变)。这样做的后果之一是,每当您执行更改字符串的操作时,您都会返回一个新的、不同的对象。

所以在您的示例中,创建了 3 个字符串。

【讨论】:

    【解决方案2】:

    取这两个String对象:

    String a = "a";
    String b = "b";
    String c = "a" + "b";
    String d = "ab";
    

    编译器创建并汇集了三个String 对象。下面逐行解释。

    • 第 1 行:"a" 池化一个 String 对象
    • 第 2 行:"b" 池化了一个 String 对象
    • 第 3 行: "a" + "b" 在编译时是计算机,并被视为文字。因此,为"ab" 汇集了一个String 对象
    • 第 4 行:"ab" 已在池中

    遵循相同的准则,您的示例生成 3 个字符串对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      相关资源
      最近更新 更多