【问题标题】:Why is it not recommended to change strings in a loop? What is recommended to use? [duplicate]为什么不建议在循环中更改字符串?推荐使用什么? [复制]
【发布时间】:2020-07-25 10:06:39
【问题描述】:

Java 面试准备中的一个问题,我没有找到答案

为什么不建议在循环中更改字符串?推荐使用什么?

【问题讨论】:

    标签: java string


    【解决方案1】:

    字符串是不可变的对象,因此当附加到字符串时,编译器可能必须创建至少一个新对象来保存结果。在循环中构造字符串需要在每次迭代中创建一个新字符串,因此会消耗更多的时间和内存。这会严重影响算法的性能。

    This 提供了使用 StringBuffer 或 StringBuilder 更新字符串的解决方案。

    r = new Random(120);
    StringBuilder sb = new StringBuilder();
    
    for(int i=0; i<100; i++) {
        sb.append(r.nextInt(2));
    }
    s = sb.toString();
    

    【讨论】:

    • 为了提高效率,您可以预先分配缓冲区:new StringBuilder(100) -- 给定的大小应该比您预期的要大,但并非如此荒谬。在这里很容易弄清楚。
    猜你喜欢
    • 2018-09-08
    • 2015-09-02
    • 2013-08-02
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 2011-07-13
    • 2014-05-10
    相关资源
    最近更新 更多