【问题标题】:String object creation for concatenated results为串联结果创建字符串对象
【发布时间】:2015-05-13 16:34:43
【问题描述】:

当我创建这样的代码时:

String s ="hello";
String s1= new String("bye");
String s3=s1.concat(s);
String s4 = s.concat(s1);

这里s 是字面意思,s1 是在堆中。当我将两者连接并创建一个新对象时,它将在哪里创建(在堆中还是在内部?)

这里一个在池中,一个在堆中。

【问题讨论】:

    标签: java string concatenation string-literals


    【解决方案1】:

    如果您看到concat() 方法的source,您将看到它返回一个新字符串

    return new String(0, count + otherLen, buf);
    

    所以字符串是在堆中创建的

    【讨论】:

      【解决方案2】:

      String concat() 将返回一个新的 String 对象而不是文字。
      所以,它将是对象的存储位置,正如你所说,它应该是heap

      在文档中指定了新对象的创建

      ....一个新的字符串对象被创建,代表一个字符序列............

      【讨论】:

        猜你喜欢
        • 2021-10-01
        • 2013-03-25
        • 2015-09-08
        • 2014-11-22
        • 2019-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多