当前位置: 首页 > 知识库问答 >
问题:

stringBuillder追加(CONST)和追加(“新字符串”)之间的区别

卢开济
2023-03-14

我能用下面两条语句具体解释一下内存和运行时开销吗?

>

  • String CONST=字符串常量;StringBuilder sb1=new StringBuilder();
    sb1.append(CONST);

    StringBuilder sb2=新的StringBuilder()
    sb2。附加(“字符串常量”);

    second是否创建字符串对象和外接程序stringpool?是否有任何场景(也考虑许多字符串附录)可以证明其中一个比另一个更好?

  • 共有2个答案

    訾高明
    2023-03-14

    关于运行时开销,对这两种方法进行模拟得到了几乎相同的结果。

    我的测试进行了1000000000次迭代,运行时间为:

    • 方法1-95109ms(平均约9.5ns)

    所以在性能上绝对没有明显的差异。

    因此,正如@LouisWasserman在他们的回答中所说,只要使用保持代码干净易读的代码。

    范浩宕
    2023-03-14

    这两个版本在内存或运行时开销方面没有差异。

    使用更易于阅读或维护的选项。如果在许多地方重复使用同一个字符串常量,该常量很长,或者可能会更改,那么拉出一个常量可能是合适的。

     类似资料:
    • 问题内容: 在每篇文章中,“如何向JEditorPane附加字符串?”问题的答案。就像 我已经试过了: 结果,我得到了“终止时间:1000”,而没有“进程的分布:” 为什么会发生这种情况??? 问题答案: 我怀疑这是附加文本的推荐方法。这意味着每次更改某些文本时,都需要重新解析整个文档。人们之所以这样做,是因为他们不了解如何使用JEditorPane。包括我在内。 我更喜欢使用JTextPane然

    • append key value 返回新字符串值的长度。

    • 问题内容: 在主要: 我得到以下输出: 但是,当我在应用程序中实现相同的操作时,将得到以下输出: 注意: 在我的加密字符串上追加了新行。 应用代码: 我如何删除多余的新行。为什么会这样,请帮助我 是什么原因? 问题答案: 我回答这个问题可能很晚,但是遇到了同样的问题。其实问题就在这里 更改该行以使其看起来像这样: 默认情况下,Android Base64 util在编码字符串的末尾添加换行符。Ba

    • 编辑:我已经删除了用于out.write的for循环,它不是必需的。我在使用字符串数组时使用过它。

    • 下面是我的代码。我想用逗号分隔的列表追加ip:port字符串。 我想要这种格式的输出: